在 MySQL 中,使用标准比较运算符 (=) 检索包含 null 值的行可能具有挑战性。这种异常现象源于 SQL 中空值的独特性质。
让我们用一个示例来说明这一点:
SELECT pid FROM planets WHERE userid = NULL
此查询预期返回 userid 列具有 NULL 值的行。然而,在许多情况下,它返回一个空集,尽管数据存在于表中(通过 phpMyAdmin 验证)。
出现问题的原因是 null SQL 与其他值不同。根据 Codd 的 12 条规则之一,null 不能等于任何其他值,包括它本身。因此,使用 = 运算符将列与 NULL 进行比较将始终返回 false。
要成功检索具有 null 值的行,我们必须使用 IS NULL 运算符:
SELECT pid FROM planets WHERE userid IS NULL
通过使用 IS NULL,我们检查该列是否真正为空,而不是尝试使用 = 将其与 NULL 进行比较
但是,在修改表结构或引擎之前,必须先用尽其他选项。
以上是如何在MySQL中有效检索具有NULL值的行?的详细内容。更多信息请关注PHP中文网其他相关文章!