Предупреждающее сообщение SQL Server о пустых значениях

Это предупреждающее сообщение, которое я время от времени получаю от SQL-сервера...

Предупреждение: нулевое значение устраняется агрегатной или другой операцией SET.

Это просто говорит о том, что значение, которое было Null, устанавливается на что-то другое, кроме Null. Почему меня нужно "предупреждать" об этом?


person cindi    schedule 16.12.2009    source источник


Ответы (4)


Нет, это говорит вам, что значение NULL передается агрегатной функции. А поскольку агрегатные функции игнорируют значения NULL (за исключением COUNT), это может быть нежелательным поведением. Поэтому вы предупреждены.

person Maximilian Mayerl    schedule 16.12.2009

У вас включены предупреждения ansi, и вы используете агрегат (sum, max, min,...) в столбце, который содержит нулевое значение.

SET ANSI_WARNINGS OFF

Цитировать:

Если установлено значение ON, если нулевые значения появляются в агрегатных функциях, таких как SUM, AVG, MAX, MIN, STDEV, STDEVP, VAR, VARP или COUNT, генерируется предупреждающее сообщение. Если установлено значение OFF, предупреждение не выдается.

person OMG Ponies    schedule 16.12.2009

Вы получаете это, потому что нули не могут быть оценены. Поэтому, если вы не используете значение null, значение null не может быть больше, меньше или равно чему-либо. Это означает, что если вы используете MAX(), эти строки с нулевым значением будут игнорироваться. Теперь вы можете обернуть столбец функцией isnull, и вы больше не получите сообщение.

person Wade73    schedule 16.12.2009

Наиболее распространенным примером этого, вероятно, является выполнение команды SELECT COUNT(<column>). Любые записи <column>, которые являются нулевыми, будут игнорироваться.

person cjk    schedule 16.12.2009