Поиск слова в текстовых BLOB-данных
Функция
Поиск слова, соответствующего заданному шаблону, в текстовых BLOB-данных.
Поиск выполняется в BLOB-данных в форматах RTF, PDF, DOC, XLS, PPT и PS.
Спецификация
::=
Синтаксические правила
-
< Имя столбца >
должно соответствовать столбцу с BLOB-данными. -
< Шаблон поиска >
может содержать стандартные специальные символы: подчеркивание «_» представляет собой указатель на произвольный символ, процент «%» – указатель на подстроку (возможно, пустую). -
В качестве < шаблона поиска > можно использовать < UNICODE-литерал >.
-
Поиск выполняется во всех BLOB-значениях, получаемых в
< запросе выборки >
. -
< Числовое выражение >
в параметре< номер вхождения >
– целое неотрицательное (больше нуля) значение типа INTEGER, задающее порядковый номер слова, которое должно быть найдено. -
Аргументы < шаблон поиска > и < номер вхождения > могут быть заданы < SQL-параметром >, который должен содержать спецификацию типа данных параметра.
Например,
Файл text.rtf: ЛИНТЕР: назначение и основные возможности ЛИНТЕР – это мощная система управления базами данных (СУБД). create or replace table tst (i int, bl blob); insert into tst(i,bl) values(1,NULL); blob insert column=2 file=text.rtf; select findrtf(bl,'%ЛИН%', 2) from tst; select findrtf(bl,? (char(10)), ?(int)) from tst; %ЛИН% 2 | 43|
Возвращаемое значение
-
Если BLOB-данные представлены в формате RTF (в соответствии со спецификацией формата RTF это определяется по наличию префикса ({/rtf в начале BLOB-данных)), то сначала осуществляется декодирование символов кириллицы (символы латиницы в RTF не кодируются), а затем поиск нужной строки.
-
Если BLOB-данные представлены не в форматах PDF, DOC, XLS, PPT и PS, функция выполняется как FINDBLOB.
-
Возвращается смещение найденного слова или 0, если все слова BLOB-значения не соответствуют шаблону. Смещение начинается с 1.
-
Тип возвращаемого значения – INT.