CREATE CONVERSION
Name
CREATE CONVERSION -- 定义一个新的编码转换
Synopsis
CREATE [ DEFAULT ] CONVERSION _name_
FOR _source_encoding_ TO _dest_encoding_ FROM _function_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
) RETURNS void;
注意
用DROP CONVERSION
删除用户定义的转换。
创建转换所需要的权限可能在未来的版本中改变。
例子
用myfunc
创建一个从UTF8
编码到LATIN1
编码的转换:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
兼容性
CREATE CONVERSION
是PostgreSQL的扩展。 在SQL标准里没有CREATE CONVERSION
语句。 但有一个在语法和意义上都很相似的CREATE TRANSLATION
语句。