当我在where语句中有一个NOT NULL子句时,为什么我的查询返回null值

时间:2011-06-02 16:09:41

标签: sql-server

我正在尝试获取DISTINCT和NOT NULL值,但这似乎不起作用:

SELECT DISTINCT ITEM 
FROM TABLE 
WHERE ITEM IS NOT NULL

这会返回DISTINCT值,但它也会返回NULL VALUES。

样品:

ITEM
a
a
b
b
c
c
NULL

输出:

a
b
c
NULL

3 个答案:

答案 0 :(得分:3)

试试这个。 “IS NOT NULL”和“IS NULL”不适用于空值。如果列允许空白,则可以同时覆盖两者。

SELECT 
   DISTINCT item FROM table 
WHERE 
   ISNULL(item,'') <> ''

答案 1 :(得分:2)

除非您的字符串 NULL而不是列中的a b c,否则此语句将返回symbol

SELECT DISTINCT ITEM FROM TABLE WHERE ITEM IS NOT NULL

要测试一下,请尝试这些

--check for
SELECT DISTINCT ITEM FROM TABLE WHERE ITEM = 'NULL'

--modify original query
SELECT DISTINCT ITEM FROM TABLE WHERE NULLIF(ITEM, 'NULL') IS NOT NULL

答案 2 :(得分:1)

检查Item是否为Varchar类型,并在其中存储值“NULL”。如果是,那么请尝试下面给出的查询:

select distinct item from table where ISNULL(item,'')<>'' and item <> "NULL"