ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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`语句。 ## 参见 [ALTER CONVERSION](#calibre_link-816), [CREATE FUNCTION](#calibre_link-4), [DROP CONVERSION](#calibre_link-557)