T SQL检查null语法混淆

nam*_*mko 2 t-sql sql-server

我继续编写select语句,其中value在SQL server中为null

SELECT * 
FROM TABLE_1 
WHERE VALUE = NULL
Run Code Online (Sandbox Code Playgroud)

哪个不对

而不是

SELECT * 
FROM TABLE_1 
WHERE VALUE IS NULL
Run Code Online (Sandbox Code Playgroud)

IS用于在值为null时检查该值但是=在值为整数或字符串时使用的原因是什么?

And*_*lov 10

原因是这NULL不是价值,而是缺乏价值.ANSI标准声明检查NULL = NULL并且NULL <> NULL两者都不返回true,而是NULL.将NULL视为"未知值".如果比较3=3,它将返回true,但如果比较is some number, that I do not know, equal to some other number, which I do not know either,显而易见的结果是I do not know are they equal.

您可能也想查看ANSI_NULLS选项.

  • 你不想乱用`set ansi nulls` - 它已被弃用,并且将永远在下一版本的SQL SERVER中启用. (3认同)