В феврале этого года я писал о задаче по преобразованию символов строки MS SQL Server в ASCII коды, которые должны быть записаны в шестнадцатеричной системе счисления. Сегодня мне понадобилось перевести тот скрипт с MS SQL Server на Oracle.
На Oracle для преобразования символов воспользуемся типом данных RAW. Этот тип данных предназначен для хранения и обработки двоичных данных небольшого объема (переменная PL/SQL может содержать до 32 767 байт, а столбец базы данных всего 2 000 байт). Для работы с данными типа RAW у Oracle есть специальный модуль UTL_RAW. Нас интересуют его функции для конвертации данных в тип RAW и обратно. Преобразование строки в последовательность шестнадцатеричных чисел будет выглядеть так:
На Oracle для преобразования символов воспользуемся типом данных RAW. Этот тип данных предназначен для хранения и обработки двоичных данных небольшого объема (переменная PL/SQL может содержать до 32 767 байт, а столбец базы данных всего 2 000 байт). Для работы с данными типа RAW у Oracle есть специальный модуль UTL_RAW. Нас интересуют его функции для конвертации данных в тип RAW и обратно. Преобразование строки в последовательность шестнадцатеричных чисел будет выглядеть так:
select RAWTOHEX(UTL_RAW.CAST_TO_RAW('XYZ')) from dualгде стандартная функция RAWTOHEX преобразует RAW в строку, содержащую его шестнадцатеричное представление. Для обратного преобразования воспользуемся функциями HEXTORAW (преобразует строку содержащую шестнадцатеричные числа в RAW) и UTL_RAW.CAST_TO_VARCHAR2 (преобразует RAW в VARCHAR2):
select UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('58595A')) from dual
Комментариев нет:
Отправить комментарий