Некорректное использование 'ПОДОБНО' (IncorrectUseLikeInQuery)¶
Тип | Поддерживаются языки |
Важность | Включена по умолчанию |
Время на исправление (мин) |
Теги |
---|---|---|---|---|---|
Ошибка |
BSL |
Важный |
Да |
10 |
standard sql unpredictable |
Описание диагностики¶
При использовании в тексте запроса оператора ПОДОБНО
допустимо использовать только
- константные строковые литералы
- параметры запроса
Запрещается формировать строку шаблона при помощи вычислений, использовать конкатенацию строк средствами языка запросов.
Запросы, в которых управляющие символы шаблона оператора ПОДОБНО
находятся в полях запроса или в вычисляемых выражениях,
по-разному интерпретируются на различных СУБД (MS SQL и PostgreSQL).
Примеры¶
Конкатенация строк средствами языка¶
Допустимо:
Реквизит ПОДОБНО "123%"
Недопустимо:
Реквизит ПОДОБНО "123" + "%"
Реквизит ПОДОБНО Таблица.Шаблон
Управляющие символы шаблона оператора ПОДОБНО находятся в полях запроса или в вычисляемых выражениях¶
Например, вместо:
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Ссылка
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны + "_"
|");
Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА");
Необходимо использовать:
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Ссылка
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны
|");
Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА_");
Источники¶
Сниппеты¶
Экранирование кода¶
// BSLLS:IncorrectUseLikeInQuery-off
// BSLLS:IncorrectUseLikeInQuery-on
Параметр конфигурационного файла¶
"IncorrectUseLikeInQuery": false