[英]SQL Count NULL values is 0 even when there are NULL values
在特定情況下,我有一個填充有1070個項目的數據庫表,在過程中的某個時刻,我向其中添加了一個名為“ Current_Status”的列。 結果,所有項目都有一個初始為NULL的新字段。
該表用作隊列,對於已處理的每一行,我將“ Current_Status”字段更新為“已處理”或“未處理”。
為了查看流程的進行情況,我使用以下查詢對剩余的狀態仍然為NULL的項目進行了計數:
SELECT COUNT([Current_Status]) FROM Table_Name WHERE [Current_Status] IS NULL
問題是,在前1000個項目之后,即使我檢查並使用SELECT * FROM Table_Name
查詢也顯示出仍有一些狀態為NULL的行,但該查詢執行的結果為0
。
任何想法可能是什么原因造成的?
我使用Azure Data Studio 1.4.5檢查了這種情況。
這樣做的原因是因為您為count提供了一個值為null
的列值。 而是使用count(*)
:
SELECT COUNT(*) FROM Table_Name WHERE [Current_Status] IS NULL
樣本數據:
current_status
--------------
Processed
Null
Not Processed
Null
以及兩個查詢之間的區別:
計數(當前狀態)
SELECT count(current_status) FROM table_name WHERE current_status IS NULL
0
計數(*)
SELECT count(*) FROM table_name WHERE current_status IS NULL
2
用
SELECT COUNT([Current_Status]) FROM Table_Name WHERE [Current_Status] IS NULL
您說“獲取current_status
為null的所有行,並計算其中有多少current_status
不為null”。 這當然是零。 COUNT(<expression>)
計算COUNT(<expression>)
非空出現次數。
您想改為計算行數:
SELECT COUNT(*) FROM table_name WHERE current_status IS NULL;
或計數仍然存在:
SELECT COUNT(*) - COUNT(current_status) FROM table_name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.