bslls:IncorrectUseLikeInQuery¶
Некорректное использование 'ПОДОБНО' (IncorrectUseLikeInQuery)¶
- Тип: Ошибка
- Важность: Важный
- Включена по умолчанию: Да
- Теги:
standard,sql,unpredictable
Описание диагностики¶
При использовании в тексте запроса оператора ПОДОБНО допустимо использовать только
- константные строковые литералы
- параметры запроса
Запрещается формировать строку шаблона при помощи вычислений, использовать конкатенацию строк средствами языка запросов.
Запросы, в которых управляющие символы шаблона оператора ПОДОБНО находятся в полях запроса или в вычисляемых выражениях,
по-разному интерпретируются на различных СУБД (MS SQL и PostgreSQL).
Примеры¶
Конкатенация строк средствами языка¶
Допустимо:
Недопустимо:
Управляющие символы шаблона оператора ПОДОБНО находятся в полях запроса или в вычисляемых выражениях¶
Например, вместо:
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Ссылка
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны + "_"
|");
Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА");
Необходимо использовать:
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Ссылка
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны
|");
Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА_");
Источники¶
Соответствие стандартам¶
- #std726, п. 1: Особенности использования в запросах оператора ПОДОБНО — Диагностика «Некорректное использование 'ПОДОБНО' (IncorrectUseLikeInQuery)» проверяет условие пункта 1 стандарта std726.
Источник диагностики¶
- Исходная статья
- Ревизия:
f4616cda8a216789ee40529ed857e614b9e2ea25 - Лицензия:
LGPL-3.0-or-later