首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 處理 NULL 值的三大陷阱:計數、空表值、外鍵

     編輯:關於SqlServer

NULL 值無處不在,資料完整性必須面對

陷阱一:COUNT(*) vs COUNT(欄位) vs COUNT(ISNULL(欄位,預設值))

  • 多數彙總函數自動忽略 NULL;COUNT(欄位) 也不計 NULL
  • COUNT(*) 計算所有列,包含 NULL
  • 若要 COUNT(欄位) 也算上 NULL,用 COUNT(ISNULL(欄位,0))

實測範例

CREATE TABLE xCount (pkey1 INT IDENTITY PRIMARY KEY, Col1 INT NULL)
INSERT xCount (Col1) VALUES (10), (15), (20), (NULL)

SELECT AVG(Col1) AS AvgNoIsNull,           -- 15 (忽略 NULL)
       AVG(ISNULL(Col1,0)) AS AvgWithIsNull, -- 11 (NULL 視為 0)
       COUNT(Col1) AS CntNoIsNull,          -- 3
       COUNT(ISNULL(Col1,0)) AS CntWithIsNull, -- 4
       COUNT(*) AS CntAll                   -- 4
FROM xCount

陷阱二:空表值與外鍵處理

(原文標題提及三問題,正文僅詳細說明計數問題。空表值與外鍵相關處理建議參考官方文件:外鍵欄位允許 NULL 時不參考檢查;插入空表值需注意約束定義。)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved