" SQL 中运算符与 NULL 比较失败? ” />
理解 SQL 中的 NULL 比较
SQL 使用“!=”和“<>”用于不平等检查。 但是,这些运算符在使用 NULL
值时会出现意外行为。
问题:
考虑这些 SQL 查询:
<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; SELECT * FROM MyTable WHERE MyColumn <> NULL; SELECT * FROM MyTable WHERE MyColumn IS NOT NULL;</code>
前两个查询返回空结果集,而第三个查询正确返回 568 行。 为什么会出现这种差异?
说明:
“!=”和“<>”比较值。 然而,NULL
不是一个值;而是一个值。它表示没有值。 因此,这些运算符不适合NULL
比较。
使用 IS NULL
或 IS NOT NULL
代替。这些谓词专门检查值是否存在。 第三个查询的成功源于其正确使用IS NOT NULL
.
要点:
NULL
值,请使用 IS NOT NULL
。NULL
值进行比较。NULL
不能被视为等于或不等于任何值,因为它代表缺失的数据。以上是为什么SQL中'!=”和'<>”运算符无法与NULL比较?的详细内容。更多信息请关注PHP中文网其他相关文章!