答案:Not equal <> != operator on NULL
这是我的表
+-------------+ | test | +-------------+ | col1 | col2 | +------+------+ | | test | +------+------+ | NULL | | +------+------+
案例1:
现在我发起查询
SELECT * FROM test WHERE col1 = '';
MySql返回第一行,因为它包含一个空值。
第2行包含col#1中的NULL值,NOT
等于EMPTY VALUE
因此结果集中省略了第二行。
这是预期的。
案例2:
但是当我将查询更改为
时
SELECT * FROM test WHERE col1 != '';
我得到一个空记录集,它应与前一个查询结果完全相反。
对于NULL
值的空值检查失败,NULL
NOT EQUAL
空值应为!=
。
因此对于IS NULL and IS NOT NULL
,检查结果集应该包含第2行作为结果,这在实际场景中不会发生。
而是MySql返回一个空结果集。
我想要的是理解MySql的这种行为,以便对这类查询进行空值比较。
P.S。:请不要发布
使用
CURRENT_DATE
运算符代替空值。