Дать порцию BLOB-значения в текстовом виде (GETBLOBSTR)
Функция
Дать порцию 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; |АБ |АБ |