將NULL 值排在所有其他值之後,特殊情況除外
在包含可選排序字段的Postgre 表格中對資料進行排序時,一個常見的挑戰正在處理空值。最好將具有空排序值的任務放在所有其他任務之後,但優先考慮具有特殊排序值(例如 -1)的任務。
這可以透過結合使用 COALESCE 函數和布林運算子來實現,特別是 (IS NOT DISTINCT FROM) 運算子。以下查詢示範了此方法:
SELECT * FROM tasks ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
工作原理:
(sort IS NOT DISTINCT FROM -1) 表達式對於除-1,計算結果為TRUE。在 PostgreSQL 的預設排序順序中,NULL 值放在最後,而 TRUE 的排名高於 FALSE。
透過將此表達式合併到ORDER BY 子句中,排序值為-1 的任務將定位在非-1 的任務之後空排序值,而具有空排序值的任務放置在所有其他任務之後。
其他注意:
可以使用 DESC 關鍵字編寫替代的等效查詢:
SELECT * FROM tasks ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
以上是如何對最後帶有 NULL 的 PostgreSQL 資料進行排序(特定值除外)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!