首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server、Oracle、MySQL 三大資料庫 NULL 判斷與替換函數對照表

     編輯:Oracle 資料庫相關知識

跨資料庫開發時,NULL 處理函數名稱不同但邏輯相同。速查表如下:

核心函數對照

資料庫函數語法範例
SQL Server ISNULL ISNULL(check_expression, replacement_value) ISNULL(NULL, 'N/A') → 'N/A'
Oracle NVL NVL(expr1, expr2) NVL(NULL, 'N/A') → 'N/A'
MySQL IFNULL IFNULL(expr1, expr2) IFNULL(NULL, 'N/A') → 'N/A'
Oracle/PostgreSQL/標準 SQL COALESCE COALESCE(expr1, expr2, ...) COALESCE(NULL, NULL, 'N/A') → 'N/A'

關鍵差異

  • ISNULL / NVL / IFNULL:**僅接受兩個參數**,型別需相容。
  • COALESCE:**支援 N 個參數**,回傳第一個非 NULL 值,符合 ANSI SQL 標準,跨資料庫可攜性最佳。
  • Oracle 12c+ 新增 NVL2(expr1, expr2, expr3):expr1 不為 NULL 回傳 expr2,否則 expr3。

實戰模式

-- 統一寫法 (跨庫相容)
SELECT COALESCE(commission_pct, 0) * salary AS bonus FROM employees;

-- Oracle 特有進階
SELECT NVL2(commission_pct, '有獎金', '無獎金') FROM employees;

避坑提醒

  • ISNULL 在 SQL Server 中為**非標準**,移植時必須改寫。
  • NVL 兩參數皆為 NULL 時回傳 NULL,COALESCE 同理。
  • 字串連接 || 遇 NULL 會變 NULL,務必先 NVL(col, '')。

新專案建議全面使用 COALESCE,舊專案維持原有函數並建立對照表供團隊參考。

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