将NULL与INT进行比较

时间:2017-10-18 11:36:30

标签: mysql null

我试图拉出两个字段不匹配的所有行。我理解空值本质上是“未知数”,因此已采取步骤将空值定义为0。如下所示。

Select ifnull(field1, 0), ifnull(field2, 0) 
from table
where field1 != field2

谁能告诉我为什么这不起作用?即使我觉得我正确地使用ifnull(field1,0)将空值定义为“0”,我仍然没有得到任何结果。

3 个答案:

答案 0 :(得分:2)

它不起作用,因为这是NULL值在关系数据库中的工作方式。几乎所有的比较都会返回NULL,这被视为错误。

此外,您在SELECT中所做的事情对WHERE没有影响。这些字段仍然来自原始表格。

更重要的是你能做什么。最简单的方法是使用NULL - 安全比较:

where not field1 <=> field2

答案 1 :(得分:0)

因为在您选择

之后而不是之前插入0

应该是:

Select * from 
((Select *,ifnull(field1, 0) new_field1, ifnull(field2, 0) new_field2
from table) As query)
WHERE new_field1 != new_field2;

答案 2 :(得分:0)

您应该将IFNULL()向下移动到WHERE子句,如下所示:

Select ifnull(field1,0) as 'Field1', ifnull(field2, 0) as 'Field2'
from table
where ifnull(field1,0) != ifnull(field2,0)