Not Equal在SQL Query中不起作用

时间:2013-01-07 16:43:06

标签: sql-server tsql

enter image description here

我正在尝试在Sql中使用“Not Equal”命令,但它似乎不起作用。当所有3个字段(status1,status2和status3)不等于Yes时,我想得到总计数。出于某种原因,我得到了0条记录。

SELECT
    COUNT(ID) from [maintable]
WHERE 
    status1 <> 'YES'
    and status2 <> 'YES'
    and status3 <> 'YES'

以上查询不会生成任何结果。我在这做错了什么?谢谢

3 个答案:

答案 0 :(得分:10)

试试这个:

SELECT
    COUNT(ID) from [maintable]
WHERE
    COALESCE(status1, '') <> 'YES'
    AND COALESCE(status2, '') <> 'YES'
    AND COALESCE(status3, '') <> 'YES'

null值不是<> 'YES',它们未定义。

COALESCE

答案 1 :(得分:0)

尝试使用EXCEPT。

SELECT
    COUNT(ID) from [maintable]
EXCEPT
SELECT
    COUNT(ID) from [maintable]
WHERE 
    status1 = 'YES'
    and status2 = 'YES'
    and status3 = 'YES'

答案 2 :(得分:0)

SELECT
    COUNT(ID) from [maintable]
WHERE
    NVL(status1, 'NO') <> 'YES'
    NVL COALESCE(status2, 'NO') <> 'YES'
    NVL COALESCE(status3, 'NO') <> 'YES'

我们可以在 null 情况下使用 nvl