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

深入 SQL Server ISNULL 與 NULLIF 函數差異與實戰用法

     編輯:關於SqlServer

ISNULL:替換 NULL

ISNULL(check_expression, replacement_value)
  • 兩參數型別必須一致。
  • check_expression 為 NULL → 回傳 replacement_value。
  • 不為 NULL → 回傳 check_expression。

NULLIF:比較相等則回傳 NULL

NULLIF(expression1, expression2)
  • 兩運算式相等 → 回傳 NULL (型別同 expression1)。
  • 不相等 → 回傳 expression1。

實戰場景

1. 避免除以零

SELECT 100 / NULLIF(Quantity, 0) AS UnitPrice;  -- Quantity=0 時回傳 NULL 而非錯誤

2. 將特定值視為 NULL

SELECT NULLIF(Status, 'N/A') FROM Orders;  -- 'N/A' 轉為 NULL,利於彙總

3. ISNULL + NULLIF 組合

-- 將 '' 視為 NULL,再給預設值
SELECT ISNULL(NULLIF(Description, ''), '無說明') FROM Products;

效能提示

  • ISNULL 為內建純量函數,執行計畫中為 Scalar Operator,極輕量。
  • NULLIF 內部轉為 CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END,效能相近。
  • 大量資料建議在查詢層處理,避免應用層迴圈判斷。

相容性

  • 兩函數皆為 SQL Server 專有 (非 ANSI 標準)。
  • 跨資料庫移植請改用 COALESCE、CASE。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved