簡體   English   中英

即使存在NULL值,SQL Count NULL值也為0

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM