DISTINCT是否排除Null

时间:2016-09-14 17:52:59

标签: sql ssms

使用COUNT(DISTINCT fieldA)时,它是否排除计算将在fieldA中的NULL值

3 个答案:

答案 0 :(得分:1)

count(distinct your_column_name)  

仅计算your_column_name中值与null

不同的行
count(*) 

在某些列中使用或不使用null计算表中的所有行

答案 1 :(得分:1)

是的,它会忽略ToListAsync。如果您想包含NULL,那么这是一种安全的方式:

NULL

答案 2 :(得分:0)

你的标题和叙述之间有2个问题。

DISTINCT不会消除(排除)空值

然而

聚合函数IGNORE空值

正如其他人提到的那样,如果你想要计算所有NON NULL DISTINCT值,请使用你提到的代码。

SELECT COUNT(DISTINCT columnName)

如果要将所有空值计算为另一个值,则可以使用2种方法之一。

1)使用COALESCE()消除null,其值不在数据集中。 E.g。

 SELECT COUNT(DISTINCT COALESCE(columnName,'|||||||||'))

2)使用条件聚合更加确定的方式类似于戈登所展示的:

显示不同的消除空值:

CREATE TABLE DistinctTest (Col INT)
INSERT INTO DistinctTest (Col) VALUES (NULL),(1),(2),(3),(NULL)

SELECT DISTINCT  *
FROM
    DistinctTest