SQL列值为null,搜索过滤器错误

时间:2013-12-25 22:47:26

标签: mysql sql

鉴于两位用户,

NAME   | JOB     | CITY
John   | null    | Washington D.C.
Sandy  | gardener| Nashville

如果我的SQL查询显示:

 "SELECT * FROM users WHERE job != 'gardener'",

我的结果为0,

我希望他们成为1:

John |  null  | Washington  D.C.

这是我正在尝试制作的更大查询的一个更简单的示例。如果我将Job默认为'0',我会得到正确的结果,但是为了其他应用程序,我宁愿在那里使用null。

更新:感谢所有建议,但我面临另一个问题。

假设我的SQL查询是:

"SELECT * FROM users WHERE city != Washington D.C. and job != 'gardener' OR job IS NULL"

不幸的是,这会让John回归,而我不想约翰,因为他住在华盛顿特区。在这种情况下我想要返回0行。

4 个答案:

答案 0 :(得分:2)

SELECT name,job,city
FROM users
WHERE IFNULL(job,'') != 'gardener';

如果你想在更新的查询中使用OR job IS NULL,正如草莓所提到的,你必须在你的JOB条件中加上括号,如下所示

SELECT * FROM users WHERE city != 'Washington D.C.' and (job != 'gardener' OR job IS NULL)

答案 1 :(得分:1)

SELECT * FROM users WHERE job != 'gardener' OR job IS NULL

答案 2 :(得分:1)

SELECT * 
FROM users 
WHERE
  job != 'gardener' or job is NULL

答案 3 :(得分:0)

NULL表示缺少数据,因此技术上SQL不会“知道”值是否为NULL的字段! ='gardener',这就是为什么你需要检查IS NULL,如上所述。