Поиск слова (FINDBLOB)

Функция

Поиск слова, соответствующего заданному шаблону.

Спецификация
 
Синтаксические правила
  1. <​Имя столбца​> должно соответствовать столбцу с BLOB-данными.

  2. <​Шаблон поиска​> может содержать стандартные специальные символы: подчеркивание «_» представляет собой указатель на произвольный символ, процент «%» – указатель на подстроку (возможно, пустую).

  3. В <​шаблоне поиска​> под элементом текста (словом) понимается любая последовательность символов, включающая только буквы, цифры, подчеркивание и дефис. Все остальные символы считаются разделителями.

  4. В <​шаблоне поиска​> допустим <​UNICODE-литерал​>.

  5. Поиск выполняется во всех BLOB-значениях, получаемых в <​запросе выборки​>.

  6. В случае, если <​шаблон поиска​> имеет символьный тип, то выполняется поиск символьных строк; если <​шаблон поиска​> имеет UNICODE-тип, то выполняется поиск UNICODE-строк.

  7. <​Числовое выражение​> в параметре <​номер вхождения​> – целое неотрицательное (больше нуля) значение типа INTEGER, задающее порядковый номер слова, которое должно быть найдено.

  8. Значение и шаблон поиска приводятся в верхнему регистру.

  9. Аргументы <​шаблон поиска​> и <​номер вхождения​> могут быть заданы <​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|
Возвращаемое значение
  1. Возвращается смещение найденного слова или 0, если все слова BLOB-значения не соответствуют шаблону. Смещение начинается с 1.

  2. При поиске в UNICODE-значения возвращается не номер символа, а номер байта, с которого начинается этот символ.

  3. Тип возвращаемого значения – 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