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