Поиск слова (FINDBLOB)
Функция
Поиск слова, соответствующего заданному шаблону.
Спецификация
::=
Синтаксические правила
-
<Имя столбца>
должно соответствовать столбцу с BLOB-данными. -
<Шаблон поиска>
может содержать стандартные специальные символы: подчеркивание «_» представляет собой указатель на произвольный символ, процент «%» – указатель на подстроку (возможно, пустую). -
В
<шаблоне поиска>
под элементом текста (словом) понимается любая последовательность символов, включающая только буквы, цифры, подчеркивание и дефис. Все остальные символы считаются разделителями. -
В
<шаблоне поиска>
допустим<UNICODE-литерал>
. -
Поиск выполняется во всех BLOB-значениях, получаемых в
<запросе выборки>
. -
В случае, если
<шаблон поиска>
имеет символьный тип, то выполняется поиск символьных строк; если<шаблон поиска>
имеет UNICODE-тип, то выполняется поиск UNICODE-строк. -
<Числовое выражение>
в параметре<номер вхождения>
– целое неотрицательное (больше нуля) значение типа INTEGER, задающее порядковый номер слова, которое должно быть найдено. -
Значение и шаблон поиска приводятся в верхнему регистру.
-
Аргументы
<шаблон поиска>
и<номер вхождения>
могут быть заданы<SQL-параметром>
, который должен содержать спецификацию типа данных параметра.create or replace table tst (I int, bl blob); insert into tst values (1, '11 222 334 55 11'); select findblob(bl, ? (char(2)), ? (int)) from tst; %1 2 | 15|
Возвращаемое значение
-
Возвращается смещение найденного слова или 0, если все слова BLOB-значения не соответствуют шаблону. Смещение начинается с 1.
-
При поиске в UNICODE-значения возвращается не номер символа, а номер байта, с которого начинается этот символ.
-
Тип возвращаемого значения – INT.
Примеры
SELECT FName,FINDBLOB(TextBlob, 'табл%', 1) FROM fb WHERE FINDBLOB(TextBlob, 'табл%', 2) >500 ORDER BY FName; SELECT Author, FINDBLOB(ArticleText, 'Russian', COUNTBLOB(ArticleText, 'Russian')) AS LastWord FROM Da WHERE COUNTBLOB(Da.ArticleText, 'Russian') > 0