大家好。有一个类别表,它有父类别,即 那些在其中parent_id = NULL
。为什么以下查询返回 0 行?
SELECT * FROM categories WHERE parent_id = NULL
大家好。有一个类别表,它有父类别,即 那些在其中parent_id = NULL
。为什么以下查询返回 0 行?
SELECT * FROM categories WHERE parent_id = NULL
NULL
是一个“特殊”值,其含义类似于“未定义值”。因为 一个“未定义值”不一定等于另一个“未定义值”,因此 SQL 标准中有
IS NULL
、IS NOT NULL
和COALESCE(...)
类似的结构。您必须使用
IS NULL
/IS NOT NULL
:更新: @Akina 对 NULL 的“可理解”定义:
我通常建议使用另一个等价物:
фиг знает
. 然后解释至少变得合乎逻辑:“第一个等于фиг знает
第二个фиг знает
吗?” 或“价值是否等于Х
价值фиг знает
?” (这里不是Х
数字、字符串、日期或变量)。正确答案是显而易见的:谁知道呢。我将补充一点,在 MS SQL Server 中,可以
NULL
使用指令来控制谓词中的这种行为SET ANSI_NULLS ON/OFF
,例如:请注意,不建议进一步使用该指令:
尽管他们已经承诺这一点一年多,但他们还没有意识到他们的威胁:)