MySql在空值(即'')与NULL的比较之间的混淆

时间:2016-01-07 06:29:58

标签: mysql

答案: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运算符代替空值。

0 个答案:

没有答案