Oracle 預設 ORDER BY 將 NULL 視為最大值(數字、字串皆同),置於最後。業務需求要求 NULL 排在最前(由小到大)。
將 NULL 與非 NULL 分兩組查詢,分別加 ROWNUM 再 UNION,最後按合成序號排序。碼長、難維護、效能差。
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'))此法簡潔、效能佳、易維護,為最佳實務。