我正在尝试在 Sql 中使用“不等于”命令,但它似乎不起作用。当所有 3 个字段(status1、status2 和 status3)不等于 Yes 时,我想获得总计数。出于某种原因,我得到 0 条记录。
SELECT
COUNT(ID) from [maintable]
WHERE
status1 <> 'YES'
and status2 <> 'YES'
and status3 <> 'YES'
上述查询不会产生任何结果。我在这里做错了什么?谢谢
我正在尝试在 Sql 中使用“不等于”命令,但它似乎不起作用。当所有 3 个字段(status1、status2 和 status3)不等于 Yes 时,我想获得总计数。出于某种原因,我得到 0 条记录。
SELECT
COUNT(ID) from [maintable]
WHERE
status1 <> 'YES'
and status2 <> 'YES'
and status3 <> 'YES'
上述查询不会产生任何结果。我在这里做错了什么?谢谢
试试这个:
SELECT
COUNT(ID) from [maintable]
WHERE
COALESCE(status1, '') <> 'YES'
AND COALESCE(status2, '') <> 'YES'
AND COALESCE(status3, '') <> 'YES'
null
值不是<> 'YES'
,它们是未定义的。
尝试使用 EXCEPT。
SELECT
COUNT(ID) from [maintable]
EXCEPT
SELECT
COUNT(ID) from [maintable]
WHERE
status1 = 'YES'
and status2 = 'YES'
and status3 = 'YES'
SELECT
COUNT(ID) from [maintable]
WHERE
NVL(status1, 'NO') <> 'YES'
NVL COALESCE(status2, 'NO') <> 'YES'
NVL COALESCE(status3, 'NO') <> 'YES'
我们可以将 nvl 用于 null 情况