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 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

52.10. pg_cast #

目錄 pg_cast 儲存資料型別轉換路徑,包括內建和使用者定義的。

應該注意的是,pg_cast 並不代表系統知道如何執行的每一種型別轉換;只包含那些不能從某種通用規則推匯出來的。例如,在域和其基本型別之間的轉換並未在 pg_cast 中顯式表示。另一個重要的例外是,“自動 I/O 轉換轉換”,即使用資料型別自身的 I/O 函式來轉換為 text 或其他字串型別(反之亦然)的轉換,並未在 pg_cast 中顯式表示。

表 52.10. pg_cast

列 型別

描述

oid oid

行識別符號

castsource oid (引用 pg_type.oid)

源資料型別的 OID

casttarget oid (引用 pg_type.oid)

目標資料型別的 OID

castfunc oid (引用 pg_proc.oid)

用於執行此轉換的函式的 OID。如果轉換方法不需要函式,則儲存零。

castcontext char

指示可以在哪些上下文中呼叫轉換。 e 表示僅作為顯式轉換(使用 CAST:: 語法)。 a 表示在隱式賦值給目標列時,以及顯式時。 i 表示在表示式中隱式地,以及其他情況。

castmethod char

指示轉換是如何執行的。 f 表示使用 castfunc 欄位中指定的函式。 i 表示使用輸入/輸出函式。 b 表示型別是二進位制可強制轉換的,因此不需要轉換。


pg_cast 中列出的轉換函式必須始終將轉換源型別作為其第一個引數型別,並將轉換目標型別作為其結果型別。轉換函式最多可以有三個引數。第二個引數(如果存在)必須是 integer 型別;它接收與目標型別相關的型別修飾符,如果不存在則為 -1。第三個引數(如果存在)必須是 boolean 型別;如果轉換是顯式轉換,則為 true,否則為 false

如果 pg_cast 條目中的源型別和目標型別相同,並且關聯的函式有多個引數,這是合法的。此類條目表示 “長度強制轉換函式”,用於將型別的值強制轉換為特定型別修飾符值可接受的範圍。

pg_cast 條目具有不同的源型別和目標型別,並且函式有多個引數時,它表示一步完成了從一種型別到另一種型別的轉換以及應用長度強制轉換。當沒有此類條目可用時,強制轉換為使用型別修飾符的型別涉及兩個步驟:一個步驟在資料型別之間進行轉換,第二個步驟應用型別修飾符。

提交更正

如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表格 報告文件問題。