sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLで数値をフォーマットするときにロケールを変更する方法

    PostgreSQLで数値をフォーマットしていて、正しいグループと小数点が使用されるようにロケールを変更したい場合は、次の方法で行うことができます。

    関心のある2つのシステム変数があります:

    lc_monetary 金額の書式設定に使用するロケールを設定します。
    lc_numeric 数値の書式設定に使用するロケールを設定します。

    これらはSETで設定できます ステートメント。

    例:

    SET lc_numeric = 'en_US';

    結果:

    SET

    それを設定すると、TO_CHAR()のように機能します en_USに従って数値をフォーマットします フォーマット。

    これらの変数が出力にどのように影響するかを示す例を次に示します。

    lc_monetary 可変

    lc_monetaryを設定する例を次に示します。 変数:

    SET lc_monetary = 'en_US';
    SELECT CAST(123456.789 AS money);

    結果:

    $123,456.79

    そして、ここでは別のロケールを使用しています:

    SET lc_monetary = 'de_DE';
    SELECT CAST(123456.789 AS money);

    結果:

    Eu123.456,79

    lc_numeric 可変

    lc_numericを設定する例を次に示します。 変数を入力し、TO_CHAR()を使用して数値をフォーマットします 機能:

    SET lc_numeric = 'en_US';
    SELECT TO_CHAR(123456.789, 'fm999G999D99');

    結果:

    123,456.79

    そして、ここでは別のロケールを使用しています:

    SET lc_numeric = 'de_DE';
    SELECT TO_CHAR(123456.789, 'fm999G999D99');

    結果:

    123.456,79

    現在の設定を確認する

    SHOWで現在の設定を確認できます コマンド。

    例:

    SHOW lc_monetary;

    結果:

    en_US

    そして:

    SHOW lc_numeric;

    結果:

    de_DE

    デフォルト値にリセット

    以下を使用して、各変数をデフォルト設定に戻すことができます。

    SET lc_monetary TO DEFAULT;
    SHOW lc_monetary;

    結果:

    en_US.UTF-8

    そしてlc_numericの場合 :

    SET lc_numeric TO DEFAULT;
    SHOW lc_numeric;

    結果:

    en_US.UTF-8

    システムで使用可能なロケールとその名前は、オペレーティングシステムベンダーから提供されたものとインストールされたものによって異なります。詳細については、ロケールのサポートに関するPostgreSQLのドキュメントを参照してください。


    1. Oracleでの監査

    2. オブジェクト'DF__*'は列'*'に依存しています-intをdoubleに変更します

    3. Read Committedは、Postgres互換の分散SQLデータベースには必須です

    4. OPENJSON、JSON_QUERY、およびJSON_VALUE(SQL Server)を使用するときに特殊文字を含むJSONキーを参照する方法