萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

SQL Server 與 Oracle 處理 NULL 值的差異總結

常用函數對照表

操作SQL ServerOracle
替換 NULLISNULL(expr, replacement)NVL(expr, replacement)
判斷 NULLIS NULL / IS NOT NULLIS NULL / IS NOT NULL

排序行為差異

  • Oracle:NULL 視為無窮大,ORDER BY ASC 時排在最後。
  • SQL Server:NULL 視為無窮小,ORDER BY ASC 時排在最前。

讓 SQL Server 排序模擬 Oracle 行為

無法直接修改引擎預設行為,但可用 CASE 表達式調整排序權重:

SELECT [id]
FROM [demo].[dbo].[orders]
ORDER BY CASE WHEN id IS NULL THEN 1 ELSE 0 END, id;

此寫法將非 NULL 值優先排序,NULL 值置於最後,效果與 Oracle 一致。

索引影響

若欄位有索引,加上 CASE 可能導致索引掃描而非索引搜尋,需根據執行計畫評估效能。

copyright © 萬盛學電腦網 all rights reserved