MySQL:选择具有 NULL 值的行
在尝试检索特定列包含 NULL 值的行时,用户遇到空值结果集。尽管在 phpMyAdmin 中查看时表显示 NULL 值,但还是出现了这种差异。
有问题的查询类似于以下内容:
SELECT pid FROM planets WHERE userid = NULL
在探索了各种建议(包括检查“NULL”或“”之后) null”字符串并搜索空白,用户仍然无法检索所需的行。由于怀疑 MyISAM 存储引擎可能是一个影响因素,用户将表转换为 InnoDB。然而问题依然存在。
解决问题
解决方案在于了解 SQL NULL 值的特殊性质。与传统值不同,NULL 不能使用等号 (=) 进行等同。要正确检索具有 NULL 值的行,必须使用以下语法:
WHERE field IS NULL
这种区别源于 NULL 代表未知或未定义的值,因此无法确定它是否真正等于任何事物,包括它本身。这一原则体现在 Codd 规则 3 中。
通过将查询调整为:
SELECT pid FROM planets WHERE userid IS NULL
用户现在应该能够成功检索具有 NULL 值的行。
以上是如何在MySQL中正确选择具有NULL值的行?的详细内容。更多信息请关注PHP中文网其他相关文章!