在我的 MySQL 表中,我有一些status
= NULL 的行和一些status
= 0的行
在查询中选择它们时:
SELECT *
FROM `table`
WHERE `status` != 0
这会忽略0
和NULL
值。
如何仅忽略0
值?
在我的 MySQL 表中,我有一些status
= NULL 的行和一些status
= 0的行
在查询中选择它们时:
SELECT *
FROM `table`
WHERE `status` != 0
这会忽略0
和NULL
值。
如何仅忽略0
值?
您可以使用is null
谓词:
ifstatus
是一个数字字段:
SELECT *
FROM `table`
WHERE `status` != 0
OR `status` IS NULL
ifstatus
是一个文本字段:
SELECT *
FROM `table`
WHERE `status` != '0'
OR `status` IS NULL
这是有效的,因为NULL != 0
评估为NULL
和NULL OR TRUE
评估为TRUE
。包含条件评估为的行NULL
被拒绝。
没试过,但也许这个?
SELECT *
FROM `table`
WHERE `status` IS NULL OR `status` != 0
从你的 sqlfiddle 来看,它似乎status
是一种文本类型,所以这就是你想要的:
SELECT *
FROM mytable
WHERE status IS NULL
OR status != '0'
如果您想同时排除它们:
SELECT *
FROM mytable
WHERE COALESCE(status,0) <> 0
;
您可以使用null 安全的等于运算符...
SELECT status
FROM mytable
WHERE not (status <=> 0);
它认为null
只是另一个值。 0 <=> null
是错误的,与null
您通过正常比较得到的相反。
与此处的其他答案一样,如果您的status
列恰好是 (var)char 类型,请引用 0。