"= ноль" и выберите утверждение! - PullRequest
0 голосов
/ 30 апреля 2010

Я уже задавал этот вопрос ранее на этом форуме, и мне сказали, что он вернет пустой набор результатов. Я хочу знать, что если я установлю столбец с нулевыми значениями, он также вернет пустой набор результатов? (Примечание: ANSI_NULLS выключен)

SELECT 'A' FROM T WHERE A = NULL;

Также это пример, который меня смущает:

DECLARE @val CHAR(4)
SET @val = NULL
SET ANSI_NULLS ON

If @val =NULL
    PRINT ‘TRUE’
ELSE
    PRINT ‘FALSE’

SET ANSI_NULLS OFF

If @val =NULL
    PRINT ‘TRUE’
ELSE
    PRINT ‘FALSE’

Сайт, на котором я нашел этот пример: http://www.sqlservercentral.com/articles/T-SQL/understandingthedifferencebetweenisnull/871/

Ответы [ 2 ]

5 голосов
/ 30 апреля 2010

Он всегда будет возвращать пустой набор результатов, потому что ничто не может равняться NULL. NULL считается «неизвестным», поэтому даже если вы сделали SELECT 'A' FROM T WHERE NULL = NULL;, он вернет пустой набор. Если вы хотите проверить, является ли столбец пустым, выполните:

SELECT 'A' FROM T WHERE A IS NULL;
2 голосов
/ 30 апреля 2010

Вам нужно IS NULL. NULL = NULL оценивается как ложное в SQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...