2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不再支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

9.10. 列舉支援函式 #

對於列舉型別(在第 8.7 節中描述),有幾個函式允許在不硬編碼列舉型別特定值的情況下進行更清晰的程式設計。這些函式列在表 9.35中。示例假設一個建立為的列舉型別

CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple');

表 9.35. 列舉支援函式

函式

描述

示例

enum_first ( anyenum ) → anyenum

返回輸入列舉型別的第一個值。

enum_first(null::rainbow)red

enum_last ( anyenum ) → anyenum

返回輸入列舉型別的最後一個值。

enum_last(null::rainbow)purple

enum_range ( anyenum ) → anyarray

以有序陣列的形式返回輸入列舉型別的全部值。

enum_range(null::rainbow){red,orange,yellow,​green,blue,purple}

enum_range ( anyenum, anyenum ) → anyarray

以有序陣列的形式返回兩個給定列舉值之間的範圍。這些值必須來自同一個列舉型別。如果第一個引數為 null,則結果將從列舉型別的第一個值開始。如果第二個引數為 null,則結果將以列舉型別的最後一個值結束。

enum_range('orange'::rainbow, 'green'::rainbow){orange,yellow,green}

enum_range(NULL, 'green'::rainbow){red,orange,​yellow,green}

enum_range('orange'::rainbow, NULL){orange,yellow,green,​blue,purple}


請注意,除了 enum_range 的雙引數形式外,這些函式都會忽略傳遞給它們的具體值;它們只關心其宣告的資料型別。可以傳遞 null 或該型別的具體值,結果相同。在示例中使用的硬編碼型別名稱的情況下,更常見的是將這些函式應用於表列或函式引數。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的經驗不符或需要進一步說明的內容,請使用此表單報告文件問題。