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

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

  • Тип: Ошибка
  • Важность: Важный
  • Включена по умолчанию: Да
  • Теги: standard, sql, unpredictable

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

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

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

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

Примеры

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

Допустимо:

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

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

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

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

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

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

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

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

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

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

Источники

Соответствие стандартам

Источник диагностики