バージョンごとのドキュメント一覧

CREATE CONVERSION

CREATE CONVERSION <refpurpose>define a new encoding conversion</refpurpose> — 新しい符号化方式変換を定義する

概要

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

説明

<title>Description</title>

<command>CREATE CONVERSION</command> defines a new conversion between two character set encodings. CREATE CONVERSIONを使用すると、2つの文字セット符号化方式間の新しい変換を定義できます。

Conversions that are marked <literal>DEFAULT</literal> can be used for automatic encoding conversion between client and server. To support that usage, two conversions, from encoding A to B <emphasis>and</emphasis> from encoding B to A, must be defined. DEFAULTとして指定された変換は、クライアントとサーバの間での自動的な符号化方式の変換に使用できます。 そのような使い方をサポートするためには、符号化方式Aから符号化方式Bへ、および、符号化方式Bから符号化方式Aへという2つの変換を定義する必要があります。

To be able to create a conversion, you must have <literal>EXECUTE</literal> privilege on the function and <literal>CREATE</literal> privilege on the destination schema. 変換を作成するためには、その関数のEXECUTE権限、および、対象となるスキーマ上のCREATE権限を保持している必要があります。

パラメータ

<title>Parameters</title>
DEFAULT

The <literal>DEFAULT</literal> 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. DEFAULT句により、この変換が、指定された変換元から対象となる符号化方式への変換のデフォルトであることが示されます。 1つのスキーマ内でデフォルトとされる変換は、符号化方式の組み合わせ1組において1つだけです。

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,  &#45;- source encoding ID
    integer,  &#45;- destination encoding ID
    cstring,  &#45;- source string (null terminated C string)
    internal, &#45;- destination (fill with a null terminated C string)
    integer,  &#45;- source string length
    boolean   &#45;- if true, don't throw an error if conversion fails

    integer,  -- 変換元符号化方式ID
    integer,  -- 変換先符号化方式ID
    cstring,  -- 変換元文字列(NULLで終わるC言語文字列)
    internal, -- 変換先文字列(NULLで終わるC言語文字列)
    integer,  -- 変換元文字列長
    boolean   -- 真の場合、変換が失敗してもエラーにならない
) 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. 戻り値は変換に成功した変換元のバイト数です。 最後の引数が偽であれば、関数は無効な入力をエラーにしなければならず、戻り値は常に変換元文字列長に等しいです。

注釈

<title>Notes</title>

Neither the source nor the destination encoding can be <literal>SQL_ASCII</literal>, as the server's behavior for cases involving the <literal>SQL_ASCII</literal> <quote>encoding</quote> is hard-wired. SQL_ASCII符号化方式を含む場合のサーバの振る舞いは組み込まれたものですので、変換元の符号化方式も対象となる符号化方式もSQL_ASCIIとすることはできません。

Use <command>DROP CONVERSION</command> to remove user-defined conversions. ユーザ定義の変換を削除するには、DROP CONVERSIONを使用します。

The privileges required to create a conversion might be changed in a future release. 変換の作成に必要な権限は、今後のリリースで変更される可能性があります。

<title>Examples</title>

To create a conversion from encoding <literal>UTF8</literal> to <literal>LATIN1</literal> using <function>myfunc</function>: myfunc関数を使用して、UTF8からLATIN1への符号化方式の変換を作成します。

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

互換性

<title>Compatibility</title>

<command>CREATE CONVERSION</command> is a <productname>PostgreSQL</productname> extension. There is no <command>CREATE CONVERSION</command> statement in the SQL standard, but a <command>CREATE TRANSLATION</command> statement that is very similar in purpose and syntax. CREATE CONVERSIONは、PostgreSQLの拡張です。 標準SQLにはCREATE CONVERSION文はありませんが、CREATE TRANSLATION文の目的および構文は非常に似たものです。

関連項目

<title>See Also</title> ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION