Перейти к содержанию

Некорректное использование 'ПОДОБНО' (IncorrectUseLikeInQuery)

Тип Поддерживаются
языки
Важность Включена
по умолчанию
Время на
исправление (мин)
Теги
Ошибка BSL Важный Да 10 standard
sql
unpredictable

Описание диагностики

При использовании в тексте запроса оператора ПОДОБНО допустимо использовать только - константные строковые литералы - параметры запроса

Запрещается формировать строку шаблона при помощи вычислений, использовать конкатенацию строк средствами языка запросов.

Запросы, в которых управляющие символы шаблона оператора ПОДОБНО находятся в полях запроса или в вычисляемых выражениях, по-разному интерпретируются на различных СУБД (MS SQL и PostgreSQL).

Примеры

Конкатенация строк средствами языка

Допустимо:

Реквизит ПОДОБНО "123%"

Недопустимо:

Реквизит ПОДОБНО "123" + "%"
Реквизит ПОДОБНО Таблица.Шаблон

Управляющие символы шаблона оператора ПОДОБНО находятся в полях запроса или в вычисляемых выражениях

Например, вместо:

Запрос = Новый Запрос("
|ВЫБРАТЬ
|    Товары.Ссылка
|ИЗ
|    Справочник.Товары КАК Товары
|ГДЕ
|    Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны + "_"
|");

Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА");

Необходимо использовать:

Запрос = Новый Запрос("
|ВЫБРАТЬ
|    Товары.Ссылка
|ИЗ
|    Справочник.Товары КАК Товары
|ГДЕ
|    Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны
|");

Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА_");

Источники

Сниппеты

Экранирование кода

// BSLLS:IncorrectUseLikeInQuery-off
// BSLLS:IncorrectUseLikeInQuery-on

Параметр конфигурационного файла

"IncorrectUseLikeInQuery": false