在我的MySQL表中,我有一些行status
= NULL而一些行status
= 0
在查询中选择它们时:
SELECT *
FROM `table`
WHERE `status` != 0
这会忽略0
和NULL
值。
如何才能忽略0
个值?
答案 0 :(得分:4)
您可以使用is null
谓词:
如果status
是数字字段:
SELECT *
FROM `table`
WHERE `status` != 0
OR `status` IS NULL
如果status
是文本字段:
SELECT *
FROM `table`
WHERE `status` != '0'
OR `status` IS NULL
这是有效的,因为NULL != 0
评估为NULL
,NULL OR TRUE
评估为TRUE
。包含条件评估为NULL
的行将被拒绝。
答案 1 :(得分:1)
没试过,但也许这个?
SELECT *
FROM `table`
WHERE `status` IS NULL OR `status` != 0
答案 2 :(得分:1)
根据你的sqlfiddle判断,status
是文本类型,所以这就是你想要的:
SELECT *
FROM mytable
WHERE status IS NULL
OR status != '0'
答案 3 :(得分:0)
如果您想将它们排除在外:
SELECT *
FROM mytable
WHERE COALESCE(status,0) <> 0
;
答案 4 :(得分:0)
您可以使用null-safe equals operator ...
SELECT status
FROM mytable
WHERE not (status <=> 0);
它将null
视为另一个值。 0 <=> null
是错误的,而不是通过正常比较获得的null
。
与此处的其他答案一样,如果您的status
列恰好是(var)char类型,则引用0。