Дать порцию BLOB-значения в текстовом виде
Функция
Дать порцию BLOB-значения в текстовом виде.
Спецификация
::=
::=
Синтаксические правила
-
При выполнении функции BLOB-данные рассматриваются как непрерывный массив байт, т.е. выделение слов игнорируется.
-
< Смещение порции >
– целое неотрицательное значение типа INTEGER, задающее номер байта, с которого начинается порция данных. Отсчет выполняется с 1. Если кодировка столбца UNICODE, то< смещение порции >
должно быть нечётным (т.к. не допускается получение половины UNICODE-символа). -
< Размер порции >
– целое неотрицательное значение типа INTEGER не больше 4000, задающее размер порции в байтах. Если кодировка столбца UNICODE, то< размер порции >
должен быть чётным (т.к. не допускается получение половины UNICODE-символа). -
Выбор порции выполняется во всех BLOB-значениях, получаемых в
< запросе выборки >
. -
< Режим подсчёта >
задает режим подсчета длины:-
0 – в байтах (по умолчанию). Означает, что и
< смещение порции >
, и< размер порции >
заданы в байтах; -
1 – в символах. Означает, что и
< смещение порции >
, и< размер порции >
заданы в символах.
-
-
Аргумент
< смещение порции >
может быть задан< SQL-параметром >
, который должен содержать спецификацию типа данных параметра.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; |АБ |АБ |