首页 > 数据库 > mysql教程 > 为什么 != 在 SQL 中与 NULL 比较时失败?

为什么 != 在 SQL 中与 NULL 比较时失败?

Linda Hamilton
发布: 2025-01-21 14:51:08
原创
111 人浏览过

Why Does != Fail When Comparing to NULL in SQL?

SQL 的 != 运算符和 NULL 难题

SQL 的 !=(不等于)运算符在处理 NULL 值时提出了独特的挑战。 虽然它可以有效地比较非 NULL 值,但它与 NULL 的行为是违反直觉的。

!= NULL

的问题

考虑这个:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; -- Returns 0 rows
SELECT * FROM MyTable WHERE MyColumn  NULL; -- Also returns 0 rows</code>
登录后复制

这些查询旨在查找 MyColumn 不是 NULL 的行,令人惊讶的是返回空结果集。这不是一个错误;而是一个错误。这是由于NULL的本质。 NULL 不代表值;它代表值的缺失。 因此,使用 NULL!= 将值与 = 进行比较始终会产生 UNKNOWN,而不是 TRUEFALSE

解决方案:IS NOT NULL

要准确识别非 NULL 值,请使用 IS NOT NULL 谓词:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn IS NOT NULL; -- Returns the expected rows</code>
登录后复制

IS NOT NULL(及其对应的 IS NULL)专为处理 SQL 比较中的 NULL 值而设计。

与非 NULL 值比较

与非 NULL 值进行比较时,!= 运算符按预期运行:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != 'ValueX'; -- Returns rows where MyColumn is not 'ValueX'</code>
登录后复制

要点

涉及NULL值的精确SQL查询需要使用IS NOT NULLIS NULL。 避免使用 !== 进行 NULL 比较,以防止出现意外结果。 使用这些专用谓词可以可靠地处理 SQL 语句中的 NULL

以上是为什么 != 在 SQL 中与 NULL 比较时失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板