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

SQL Server 查詢 NULL 值的正確姿勢:IS NULL vs = NULL

     編輯:關於SqlServer

常見錯誤

-- 錯誤:ANSI_NULLS ON 時永遠傳回空結果
SELECT * FROM 表 WHERE 欄位 = NULL

-- 錯誤:LEN(NULL) 回傳 NULL,不等於 0
SELECT * FROM 表 WHERE LEN(欄位) = 0

正確寫法

-- 標準 SQL,任何 ANSI_NULLS 設定下皆有效
SELECT * FROM 表 WHERE 欄位 IS NULL

-- 判斷非 NULL
SELECT * FROM 表 WHERE 欄位 IS NOT NULL

原理說明

SQL 三值邏輯:NULL = NULL 結果為 UNKNOWN (非 TRUE),故 WHERE 子句過濾掉。IS NULL 是專門判斷標記的述詞,不受 ANSI_NULLS 影響。

實務建議

  • 永遠使用 IS NULL / IS NOT NULL。
  • 避免在 WHERE 條件對欄位使用函數 (如 ISNULL(欄位, '') = ''),導致索引失效。
  • 若需預設值顯示,在 SELECT 列表用 ISNULL(欄位, '預設值') 或 COALESCE。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved