CREATE CONVERSION — 定義一個新的編碼轉換
CREATE [ DEFAULT ] CONVERSIONname
FORsource_encoding
TOdest_encoding
FROMfunction_name
CREATE CONVERSION
定義了一個新的字元集編碼之間的轉換。
被標記為 DEFAULT
的轉換可以用於客戶端和伺服器之間的自動編碼轉換。為了支援這種用法,必須定義兩個轉換,即從編碼 A 到 B 以及 從編碼 B 到 A。
要能夠建立轉換,您必須對函式擁有 EXECUTE
許可權,並對目標模式擁有 CREATE
許可權。
DEFAULT
DEFAULT
子句表示此轉換是此特定源到目標編碼的預設轉換。在一個模式中,對於一對編碼,應該只有一個預設編碼。
name
轉換的名稱。轉換名稱可以被模式限定。如果未被限定,則轉換在當前模式中定義。轉換名稱在一個模式內必須是唯一的。
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
語句,在目的和語法上與此非常相似。
如果您在文件中發現任何不正確之處,與您在使用該特定功能時的體驗不符,或需要進一步澄清,請使用 此表單 報告文件問題。