Выражение ПОДОБНО
Для подавляющего большинства задач функциональность выражения Шаблон
является избыточной. В случае, если шаблон зависит от пользовательского ввода, требуется аккуратно реализовать экранирование специальных символов — обычно в этом месте допускаются ошибки.
Чтобы избежать ошибок, для задач проверки вхождения подстроки в строку рекомендуется использовать функции Содержит()
, НачинаетсяС()
, ЗаканчиваетсяНа()
.
Выражение ПОДОБНО
позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа.
ВЫБРАТЬ
ОбработанныеСообщения.КодУчастника КАК КодУчастника,
ОбработанныеСообщения.ИмяПроцесса КАК ИмяПроцесса
ИЗ
ОбработанныеСообщения КАК ОбработанныеСообщения
ГДЕ
ОбработанныеСообщения.ИмяПроцесса ПОДОБНО "[Оо]бмен"
Синтаксис:
проверяемое-значение [НЕ] ПОДОБНО шаблон [СПЕЦСИМВОЛ спец-символ]
В качестве шаблон и спец-символ можно использовать только константы или параметры. шаблон не может быть пустым. Все операнды должны иметь строковой тип.
Некоторые символы при использовании в шаблон имеют специальное значение:
_
(подчеркивание) — один любой символ,%
— ноль или более любых символов,[]
— любой символ из перечисленных (например[12345]
),[^]
— любой символ не из перечисленных (например[^12345]
).
Квадратные скобки в шаблон обязательно должны быть закрыты и не могут быть пустыми.
Если символ, имеющий специальное значение, предварить символом, указанным в спец-символ, то он воспринимается как обычный символ. В качестве значения спец-символ ожидается строка длиной 1. Это должен быть символ, который в UTF-16 кодируется без использования суррогатных пар.
Если спец-символ не задан, то в качестве экранирующего символа используется обратный слэш — \
.
Символ, используемый в качестве спецсимвола (экранирующего), не может быть последним в шаблоне.
Сравнение выполняется без учета регистра.
Примеры:
-
ПОДОБНО "%123%"
найдет строки, содержащие 123, например:
- 123
- 123456
- 00123456
- 00123
-
ПОДОБНО "%3\%" СПЕЦСИМВОЛ "\"
найдет строки, заканчивающиеся на 3%, например:
- 23%
- 3%
- 43%