Дать порцию BLOB-значения в текстовом виде
Функция
Дать порцию BLOB-значения в текстовом виде.
Спецификация
::=
::=
Синтаксические правила
-
При выполнении функции BLOB-данные рассматриваются как непрерывный массив байт, т.е. выделение слов игнорируется.
-
<Смещение порции>
– целое неотрицательное значение типа INTEGER, задающее номер байта, с которого начинается порция данных. Отсчет выполняется с 1. Если кодировка столбца UNICODE, то<смещение порции>
должно быть нечётным (т.к. не допускается получение половины UNICODE-символа). -
<Размер порции>
– целое неотрицательное значение типа INTEGER не больше 4000, задающее размер порции в байтах. Если кодировка столбца UNICODE, то<размер порции>
должен быть чётным (т.к. не допускается получение половины UNICODE-символа). -
Выбор порции выполняется во всех BLOB-значениях, получаемых в
<запросе выборки>
. -
<Режим подсчёта>
задает режим подсчета длины:-
0 – в байтах (по умолчанию). Означает, что и
<смещение порции>
, и<размер порции>
заданы в байтах; -
1 – в символах. Означает, что и
<смещение порции>
, и<размер порции>
заданы в символах.
-
-
Аргумент
<смещение порции>
может быть задан
, который должен содержать спецификацию типа данных параметра.create or replace table test(bl blob); insert into test values(null); blob insert column=1 333333ABCDc0ff4532; select getblobstr(bl, ? (int), 10,1) from test; 2 |33л-└ E2 |
Возвращаемое значение
-
Возвращается текстовая строка длиной
<размер порции>
. Если требуемая порция не найдена, строка будет содержать пробелы. -
Тип возвращаемого значения:
-
NCHAR: в случае кодировки UCS2;
-
CHAR: во всех остальных случаях, текст будет автоматически перекодирован из кодировки, указанной при создании BLOB-столбца, в кодировку канала.
-
-
Если BLOB-данные имеют NULL-значение, возвращается строка пробелов.
-
Если один из параметров имеет значение NULL, то результат будет NULL.
Примеры
create or replace table tst ("Информация о БД" blob); insert into tst ("Информация о БД") values ('СУБД ЛИНТЕР – реляционная мобильная ...'); select getblob("Информация о БД",1,40) from tst; | D1 D3 C1 C4 20 CB C8 CD D2 C5 D0 20 2D 20 F0 E5 EB FF F6 E8 EE ED ED E0 FF 20 EC EE E1 E8 EB FC ED E0 FF 20 2E 2E 2E 20|
select getblobstr("Информация о БД",1,40) from tst;|СУБД ЛИНТЕР – реляционная мобильная ... |
create or replace table blb(bl blob character set "CP866"); insert into blb values (n'12АБВГ'); select getblobstr(bl,3,2),getblobstr(bl,3,2,1) from blb; |АБ|АБ|
create or replace table blb(bl blob character set "UCS2"); insert into blb values (n'12АБВГ'); select getblobstr(bl,5,4),getblobstr(bl,3,2,1) from blb; |АБ|АБ|
create or replace table blb(bl blob character set "UTF-8"); insert into blb values (n'12АБВГ'); select getblobstr(bl,3,4),getblobstr(bl,3,2,1) from blb; |АБ |АБ |