大家好。有一个类别表,它有父类别,即 那些在其中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,例如:请注意,不建议进一步使用该指令:
尽管他们已经承诺这一点一年多,但他们还没有意识到他们的威胁:)