Перейти к основному содержимому
Версия: 7.0

Оператор LIKE

Оператор LIKE создает свойство, реализующее сравнение строки с шаблоном. Для полнотекстового поиска используется отдельный оператор MATCH.

Синтаксис

searchExpr LIKE compareExpr

Описание

Оператор LIKE создает свойство, которое возвращает TRUE, если указанная строка соответствует указанному шаблону, в соответствии с правилом результата операторов сравнения (TRUE или NULL, но никогда FALSE). Шаблон может включать следующие специальные символы:

  • % (процент) - заменяет любое количество символов, включая отсутствие символов. Этот символ применяется, когда точное содержание или количество символов в части строки неизвестно.
  • _ (подчеркивание) - заменяет ровно один символ. Применяется, когда необходимо точно определить местоположение одного символа, но сам символ может быть любым.

Для включения символов % или _ в шаблон как обычных символов, их необходимо экранировать с помощью символа обратной косой черты \. Не забывайте, что при задании шаблона с помощью строкового литерала для представления самой обратной косой черты её нужно удвоить: \\.

Регистрозависимость LIKE определяется классом searchExpr. Для регистронезависимых строковых классов (ISTRING, BPISTRING, TEXT, RICHTEXT, HTMLTEXT) оператор выполняет регистронезависимое сравнение.

Параметры

  • searchExpr

    Выражение, значение которого определяет сравниваемую строку.

    Значение выражения должно принадлежать одному из строковых классов.

  • compareExpr

    Выражение, значение которого определяет шаблон.

    Значение выражения должно принадлежать одному из строковых классов.

Примеры

isReportDocument(Document doc) = name(doc) LIKE '%отчет%'; // проверяет, что в имени встречается слово 'отчет'
isPhoneNumber(STRING str) = str LIKE '(___) ___-____'; // проверяет телефонный номер на соответствие формату

startsWith(STRING str, STRING prefix) = str LIKE prefix + '%'; // проверяет начало строки
contains(STRING content, STRING str) = content LIKE '%' + str + '%'; // проверяет строку на вхождение
containsNew(STRING content, STRING str) = content LIKE '%${str}%'; // тоже самое, но со строковой интерполяцией

escapingExample(STRING str) = str LIKE '__\\%'; // Пример экранирования. Проверяет на двузначное количество процентов.