2016-09-16 97 views
0

是否COUNT(1) - COUNT(column_name)只返回空值的數量嗎?

COUNT(1) - COUNT(column_name) as total_nulls 

只能從給定列返回空值的計數?

我覺得它確實但很想知道。謝謝

+0

你不是指'非空值'嗎? –

+0

沒有。只需要空值。嘗試從列中獲取元數據。即MAX,MIN,AVG,COUNT,DISTINCT,NULL等...只是每列的數值 – luke

+0

如果你想要空值,你應該嘗試'COUNT(*) - COUNT(column_name)',但現在你的問題是有點混淆你真正想要的東西。 –

回答

1

是它。更合乎邏輯和易於閱讀的版本將是:

select count(*) from myTable where myColumn is null; 

PS:此版本也將受益於現有的索引。

+0

謝謝你給我一個明確的答案!即時查詢多列(每個表中最多40),並不想寫出其中X是空的,Y是空的,Z是NULL等... – luke

1
count(1)=count(*)--returns nulls 
count(columnname)--won't return nulls 
4

爲什麼你不嘗試呢?

DEMO

CREATE TABLE Table1 
    ([Country] varchar(7)) 
; 

INSERT INTO Table1 
    ([Country]) 
VALUES 
    ('Germany'), 
    ('France'), 
    (NULL), 
    (NULL), 
    ('Spain') 
; 

SELECT count(*), count(country), count(1) 
FROM Table1 

enter image description here

+0

我知道我絕對應該在發佈問題之前...只是尋找一個快速的答案,並不能在谷歌上找到它。感謝演示! – luke

+0

Plus1的完整演示 –

1

另一種可以做到這一點的方法是使用SUM。

select sum(case when MyColumn is null then 1 else 0 end)