Count 和 NULL值 造成的問題

2021-04-12 12:48:02 字數 567 閱讀 1061

最近使用者反映,自動配線功能不能正常執行,但在用手工配時,能成的配出來。

在查詢原因時,主要查詢儲存過程,因為這個功能主要是呼叫儲存過程來實現的。

查詢到最近,發現有一條語句,明明的記錄,但是不能返回正確的記錄數,老是返回0:

select count(t.areaid) from dl_line t where t.startlineid =1111;

但是在表 dl_line 中,是有5條滿足條件的記錄,count(t.areaid) 用來統計統符合條件的記錄數,

但是在執行時,返回 0 條。最後一檢視,這幾條記錄的 areaid 全是null,沒有值。

改用 select count(*) from dl_line t where t.startlineid =1111; 執行後,返回了正確的結果 5 條,

回頭一看,造成這種的情況的原因有:

第一:count 函式只能統計有具體值的字段,如果指定具體的字段,如 count(field_a),則如果field_a列有空值時,對有空值的記錄不統計。

第二:要注意欄位的null,這種值的字段,容易出錯。最好用 nvl 給出預設值。

null值是不會算在count以內的

做統計的時候,null是不計算在count以內的。所以欄位的值最好不要設定為null。比如 select count user id as beyond num from fs users added where credits 410 user id 75語句,就統計不到null的資料行。我需要統...

Linq中Count 和Any 引發的效率問題

1 count和any 今天看了0 來判斷集合非空 href target blank 鶴沖天的文章 linq 切勿使用 count 0 來判斷集合非空 有所收穫,寫下文章總結一下 先看如下 1 static void main string args 212 public static ienum...

NULL和DBNULL的值的區別

c 中,null 關鍵字是表示不引用任何物件的空引用的文字值。null 是引用型別變數的預設值。那麼也只有引用型的變數可以為 null 如果int i null,的話,是不可以的,因為 int是值型別的。在 c 裡面定義字串的時候還可以用 和 string.empty.這兩個都是表示空字串,其中有乙...