这可能是个愚蠢的问题,但 null 似乎既不等于也不不等于任何空字符串 ""。
我有一个包含以下值的表:
id field1 field2 field3
1 a b c
2 null b c
3 b c
4 a b c
我的查询
select * from table where field1 = ""
不返回 field1 值为空的第 2 行。这是绝对有道理的,因为 null 不等于空字符串。
但是,
select * from table where field1 != ""
也不返回第 2 行。
有人能解释一下这个的历史渊源吗?是否因为值 null 意味着我们不知道该值,因此不知道 field1 是否等于或不等于第 2 行的空字符串?
最佳答案
NULL
不等于空。 NULL
不等于任何,包括NULL
。要与 NULL
进行比较,您需要使用 IS NULL
或 IS NOT NULL
SELECT NULL = NULL,
NULL != NULL,
NULL IS NULL,
NULL IS NOT NULL
NULL = NULL NULL != NULL NULL IS NULL NULL IS NOT NULL
(null) (null) 1 0
select * from table where field1 IS NULL
或
select * from table where field1 IS NOT NULL
关于MySQL - = ""和 != ""关于 null 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22968027/