Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

ANSI_NULLS On

Параметр определяет поведение операторов равно (=), не равно (<>) и in при сравнении с NULL. Подробнее см. в документации Microsoft, статью «SET ANSI_NULLS (Transact-SQL)».

Решение: для сравнения с NULL используйте is null. Для сравнения объектов, значения которых могут быть пустыми, SQL-запрос нужно переписать исходя из ожидаемого результата.

Пример:

SET ANSI_NULLS Off

SET ANSI_NULLS On

if @XRecID = null

if @XRecID is null

select top 5 *
from
 MBAnalit
where
 HighLvl in (
   45137,
  (select HighLvl from MBAnalit where Analit = 157036)
)

select top 5 *
from
 MBAnalit
where
 HighLvl in (
   45137,
  (select HighLvl from MBAnalit where Analit = 157036)
)
or
(
   HighLvl is null and
  (select HighLvl from MBAnalit where Analit = 157036) is null
)

CONCAT_NULL_YIELDS_NULL On

Параметр определяет результат сложения строк, если одна из них имеет значение NULL. Подробнее см. в документации Microsoft, статью «SET CONCAT_NULL_YIELDS_NULL».

Решение: используйте функцию IsNull.

Примечание

Сложение строк внутри инструкции EXECUTE изменять не нужно, иначе возникнет ошибка.

Пример:

SET CONCAT_NULL_YIELDS_NULL Off

SET CONCAT_NULL_YIELDS_NULL On

select *
from
 MBAnalit
where
 NameAn + ' ' + Dop2 like 'Петров И.Г.'

select *
from
 MBAnalit
where
 IsNull(NameAn, '') + ' ' + IsNull(Dop2, '') like 'Петров И.Г.'

QUOTED_IDENTIFIER On

Параметр определяет, как интерпретируется текст в двойных кавычках. Подробнее см. в документации Microsoft, статью «SET QUOTED_IDENTIFIER (Transact-SQL)».

Решение: все двойные кавычки, используемые для указания строк, замените на одинарные. Если внутри строки, окруженной двойными кавычками, ранее были одинарные, их нужно продублировать.

Пример:

SET QUOTED_IDENTIFIER Off

SET QUOTED_IDENTIFIER On

select top 5 *
from
 MBAnalit
where
 StatFlag = "+" and Sost = "Д"

select top 5 *
from
 MBAnalit
where
 StatFlag = '+' and Sost = 'Д'

Некоторые объекты в базе данных при создании сохраняют параметры соединения с SQL-сервером:

хранимые процедуры сохраняют значения параметров QUOTED_IDENTIFIER и ANSI_NULLS. Чтобы в хранимых процедурах, не входящих в стандартную поставку, использовались необходимые значения параметров, пересоздайте ХП;
таблицы сохраняют значение параметра ANSI_NULLS. Чтобы в таблице использовать фильтрованные индексы, пересоздайте таблицу со значением параметра ANSI_NULLS ON.
© Компания DIRECTUM, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }