首頁 >資料庫 >mysql教程 >如何對最後帶有 NULL 的 PostgreSQL 資料進行排序(特定值除外)?

如何對最後帶有 NULL 的 PostgreSQL 資料進行排序(特定值除外)?

Susan Sarandon
Susan Sarandon原創
2025-01-04 05:33:42415瀏覽

How to Order PostgreSQL Data with NULLs Last, Except for a Specific Value?

將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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn