On this page
CREATE CONVERSION
CREATE CONVERSION-定义新的编码转换
Synopsis
CREATE [ DEFAULT ] CONVERSION name
FOR source_encoding TO dest_encoding FROM function_name
Description
CREATE CONVERSION定义了字符集编码之间的新转换。另外,标记为DEFAULT的转换可用于 Client 端和服务器之间的自动编码转换。为此,必须定义两次转换,从编码 A 到 B *和从编码 B 到 A *。
为了能够创建转换,您必须在函数上具有EXECUTE特权,并且在目标架构上具有CREATE特权。
Parameters
DEFAULTDEFAULT子句指示此转换是此特定源到目标编码的默认转换。模式中的编码对应该只有一种默认编码。
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;
Notes
使用DROP CONVERSION删除用户定义的转化。
创建转换所需的特权可能会在将来的版本中更改。
Examples
要使用myfunc从编码UTF8到LATIN1进行转换,请执行以下操作:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
Compatibility
CREATE CONVERSION是 PostgreSQL 扩展。 SQL 标准中没有CREATE CONVERSION语句,但是CREATE TRANSLATION语句的目的和语法非常相似。