Postgresql 中文操作指南

CREATE CONVERSION

CREATE CONVERSION — 定义新的编码转换

CREATE CONVERSION — define a new encoding conversion

Synopsis

CREATE [ DEFAULT ] CONVERSION name
    FOR source_encoding TO dest_encoding FROM function_name

Description

CREATE CONVERSION 定义两种字符集编码之间的新转换。

CREATE CONVERSION defines a new conversion between two character set encodings.

标记为 DEFAULT 的转换可用于在客户端和服务器之间进行自动编码转换。为了支持此用法,必须定义两个转换:从编码 A 到 B and 从编码 B 到 A。

Conversions that are marked DEFAULT can be used for automatic encoding conversion between client and server. To support that usage, two conversions, from encoding A to B and from encoding B to A, must be defined.

要能够创建一个转换,您必须对该函数拥有 EXECUTE 权限,并对目标模式拥有 CREATE 权限。

To be able to create a conversion, you must have EXECUTE privilege on the function and CREATE privilege on the destination schema.

Parameters

  • DEFAULT

    • The DEFAULT clause indicates that this conversion is the default for this particular source to destination encoding. There should be only one default encoding in a schema for the encoding pair.

  • name

    • The name of the conversion. The conversion name can be schema-qualified. If it is not, the conversion is defined in the current schema. The conversion name must be unique within a schema.

  • source_encoding

    • The source encoding name.

  • dest_encoding

    • The destination encoding name.

  • function_name

    • The function used to perform the conversion. The function name can be schema-qualified. If it is not, the function will be looked up in the path.

    • The function must have the following signature:

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;
  • The return value is the number of source bytes that were successfully converted. If the last argument is false, the function must throw an error on invalid input, and the return value is always equal to the source string length.

Notes

源和目标编码都不能是 SQL_ASCII ,因为服务器针对涉及 SQL_ASCII “编码” 的场景的行为已固化。

Neither the source nor the destination encoding can be SQL_ASCII, as the server’s behavior for cases involving the SQL_ASCII “encoding” is hard-wired.

使用 DROP CONVERSION 删除用户定义的转换。

Use DROP CONVERSION to remove user-defined conversions.

创建转换所需的权限在未来的版本中可能发生更改。

The privileges required to create a conversion might be changed in a future release.

Examples

要使用 myfunc 创建从编码 UTF8LATIN1 的转换:

To create a conversion from encoding UTF8 to LATIN1 using myfunc:

CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;

Compatibility

CREATE CONVERSION 是 PostgreSQL 扩展。SQL 标准中没有 CREATE CONVERSION 语句,但 CREATE TRANSLATION 语句在目的和语法上非常相似。

CREATE CONVERSION is a PostgreSQL extension. There is no CREATE CONVERSION statement in the SQL standard, but a CREATE TRANSLATION statement that is very similar in purpose and syntax.