CREATE CONVERSION — 定義新的編碼轉換
CREATE [ DEFAULT ] CONVERSIONname
FORsource_encoding
TOdest_encoding
FROMfunction_name
CREATE CONVERSION
定義兩個字元集編碼之間的新轉換。
標記為 DEFAULT
的轉換可用於客戶端和伺服器之間的自動編碼轉換。為了支援這種用法,必須定義從編碼 A 到 B 以及 從編碼 B 到 A 的兩個轉換。
為了能夠建立轉換,您必須擁有該函數的 EXECUTE
權限和目標綱要的 CREATE
權限。
DEFAULT
DEFAULT
子句表示此轉換是特定來源到目標編碼的預設值。對於編碼對,綱要中應該只有一個預設編碼。
名稱
轉換的名稱。 轉換名稱可以使用綱要限定。 如果不是,則在目前的綱要中定義轉換。 轉換名稱在綱要中必須是唯一的。
source_encoding
來源編碼名稱。
dest_encoding
目標編碼名稱。
function_name
用於執行轉換的函式。 函式名稱可以使用綱要限定。 如果不是,則將在路徑中查詢函式。
該函數必須具有以下簽名
conv_proc( integer, -- source encoding ID integer, -- destination encoding ID cstring, -- source string (null terminated C string) internal, -- destination (fill with a null terminated C string) integer, -- source string length boolean -- if true, don't throw an error if conversion fails ) RETURNS integer;
傳回值是成功轉換的來源位元組數。 如果最後一個引數為 false,則該函數必須在無效輸入上拋出錯誤,並且傳回值始終等於來源字串長度。
來源和目標編碼都不能是 SQL_ASCII
,因為伺服器對於涉及 SQL_ASCII
“編碼” 的情況的行為是硬連線的。
使用 DROP CONVERSION
移除使用者定義的轉換。
建立轉換所需的權限可能會在未來的版本中變更。
使用 myfunc
建立從編碼 UTF8
到 LATIN1
的轉換
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
CREATE CONVERSION
是 PostgreSQL 擴充功能。 SQL 標準中沒有 CREATE CONVERSION
語句,但是有一個 CREATE TRANSLATION
語句,其目的和語法非常相似。
如果您在文件中發現任何不正確、與特定功能的體驗不符或需要進一步澄清的地方,請使用 此表格 來報告文件問題。