SQL:理解 'x is null' 和 'x = null' 之间的区别
SQL 提供两种不同的方法来测试列的 NULL 值:'x is null' 和 'x = null'。虽然这两个表达式看起来相似,但它们的行为却有显着的不同。
'x = null' 与 'x is null':关键区别
表达式 'x = null' 是一种比较运算,它检查 'x' 的值是否等于字面上的 NULL 值。但是,在 SQL 中,任何涉及 NULL 值的比较,包括 'x = null',都将始终返回 'null'。这是因为 SQL 中的 NULL 值表示未知值,因此无法确定它们是否等于任何其他值。
相反,'x is null' 是一个专门测试 NULL 值存在的表达式。如果 'x' 为 NULL,则返回 'true';否则返回 'false'。这允许对 NULL 值进行准确的测试,而不会出现与 'x = null' 相关的歧义。
为什么 'x = null' 不起作用
如前所述,'x = null' 在 SQL 中将始终返回 'null'。这意味着当在 WHERE 子句中使用时,它不会产生任何匹配的行,因为在这种情况下 'null' 被认为是 false。
示例
考虑以下表格:
X | Y |
---|---|
1 | null |
null | 1 |
如果您执行查询 'SELECT * FROM t WHERE x = null',即使存在 'x' 为 'null' 的行,您也不会得到任何行。这是因为 'x = null' 总是计算为 'null',在 WHERE 子句中 'null' 为 false。
使用 'x is null' 进行准确的 NULL 值测试
要正确测试 NULL 值,请使用 'x is null' 而不是 'x = null'。以下是一个将返回所需行的示例:
SELECT * FROM t WHERE x is null
此查询将返回:
X | Y |
---|---|
null | 1 |
结论
理解 'x is null' 和 'x = null' 之间的区别对于有效的 SQL 编程至关重要。 'x = null' 将 'x' 与字面上的 NULL 值进行比较,并始终返回 'null',而 'x is null' 专门测试 NULL 值的存在。在测试 NULL 值时,始终使用 'x is null' 以获得准确的结果。
以上是SQL NULL 比较:为什么使用'x IS NULL”而不是'x = NULL”?的详细内容。更多信息请关注PHP中文网其他相关文章!