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

Oracle 排序中 NULL 值置頂的兩種解決方案

     編輯:Oracle 資料庫基礎

問題描述

Oracle 預設 ORDER BY 將 NULL 視為最大值(數字、字串皆同),置於最後。業務需求要求 NULL 排在最前(由小到大)。

方案一:複雜 SQL + UNION + ROWNUM(不推薦)

將 NULL 與非 NULL 分兩組查詢,分別加 ROWNUM 再 UNION,最後按合成序號排序。碼長、難維護、效能差。

方案二:NVL 轉換排序鍵(推薦)

SELECT ... 
FROM ...
ORDER BY NVL(排序欄位, '替代值');
  • 字串型:NVL(COL, ' ') 或 NVL(COL, CHR(0)) 使 NULL 排最前
  • 數字型:NVL(COL, -1) 或極小值
  • 日期型:NVL(COL, TO_DATE('0001-01-01','YYYY-MM-DD'))

此法簡潔、效能佳、易維護,為最佳實務。

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