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のドキュメントを参照してください。