Рассмотрим назначение и использование условного оператора ПОДОБНО(eng. LIKE) в языке запроса 1С в примерах.

Предназначение

Проверить на соответствие строкового значения в запросе указанному шаблону – возвращает значение Булево-типа (ИСТИНА или ЛОЖЬ).

  • Проверка регистро – независима.
  • При запросе используются индексы таблиц – не связано с индексами полнотекстового поиска.
  • Может долго выполнятся при больших таблицах.
  • Строки неограниченной длины следует привести функцией ПОДСТРОКА

Места использования

  • В условиях оператора ГДЕ
  • В условиях конструкции ВЫБОР КОГДА <> ТОГДА “” ИНАЧЕ “” КОНЕЦ
  • В полях выборки (например: Наименование ПОДОБНО &ПараметрПодобно как СтрокаПодходит)

Описание синтаксиса оператора ПОДОБНО

Параметр оператора должен быть строкой: может задаться константой, либо передан  как параметр запроса.

Литералы(маски), указанные ниже, допускается использовать совместно и по отдельности.

Точное указание строки

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "1"//Равносильно Ключи.Наименование ="1"

Результат:

tochnoe-ukazanie-podobno% – литерал, означающий произвольное количество любых символов

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "%"

Результат: любые 10 наименованийpodobno-lyuboe

_ (подчеркивание): литерал, соответствующий одному любому символу

Пример  №1:

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "_"

Пример №2: начинающиеся на любой символ, затем следует “1”, а дальше любые символы

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
   Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "_1%"

Результат:

podobno-na-vtorom-meste-1[] (в квадратных скобках один или несколько символов)

  • Каждый литерал, соответствующий одному любому символу – используется как ИЛИ.
    Допустимо указание диапазона, например a-z,0-5, означающее произвольный символ из заданного диапазона

Пример 

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "[лз]%"

Результат: 10 начинающихся на “л” или “з”

podobno-nachinaetsya-na-odin-iz-ukazannyh-simvolov

Пример: начинающиеся на 5,6,7 

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "[5-7]%"

Результат:

podobno-567[^] (в квадратных скобках значок исключения ^, за которым следует один или несколько символов)

Равносильно любому символу (_) кроме указанных ([]) 

Пример

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "8.[^012]%"//не включаем 8.0,8.1,8.2

Результат: все начинающиеся на “8.” исключая указанные

podobno-isklyuchaya-8-0-8-1-8-2

СПЕЦСИМВОЛ – команда для указания в запросе зарегистрированных выше символов

В качестве служебного символа допустимо использовать как минимум: #,~,/,\

Пример:

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "#_" СПЕЦСИМВОЛ "#"

Результат:

podcherkivanie-v-rezultate

Применимость в платформах

  • 8.0
  • 8.1
  • 8.2
  • 8.3
  • 8.4

Неверные параметры ПОДОБНО <<?>>

  • Передается параметр не строкового типа: например число 1 вместо строки “1”
  • Сравнивается поле не строкового типа с верной маской (например ссылка) или при соединении значение не проверяется на ЕстьNUL

Обратите внимание на текст ошибки, где выводится вопрос:

<<?>>Ключи.Ссылка ПОДОБНО "1"

или 

Ключи.Наименование ПОДОБНО <<?>>&L

Газетные объявления содержат больше правды о том, что происходит в стране, чем газетные передовицы.

— Г. Бичер