支援的版本: 目前 (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 或該類型的特定值,結果相同。將這些函數應用於表欄位或函數參數,比應用於範例中使用的硬編碼類型名稱更常見。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格報告文件問題。