2017-01-19 18 views
0

デンマークの数値設定を使用するデータベース(小数点区切り文字はカンマ)を使用するプロジェクトに参加しています。私は10進数/数値/テキスト以外の値をデータベースに格納する方法を理解しようとしていますが、コンマ区切りを保持してください。 AWSパラメータグループのlc_numeric設定をオンラインでデンマークロケール設定になっているda_DKに更新しましたが、値は小数点ではなくピリオドで表示されます。これは可能なのですか?例えばPostgres lc_numericが期待どおりに動作しない

CREATE TABLE test ( 
    num NUMERIC 
);        // I've also tried Decimal instead of numeric 

INSERT INTO test ('1,3')  // error 
INSERT INTO test ('1.3')  // returns 1.3 when selected. 
SHOW lc_numeric    // returns da_DK as expected. 
SELECT * FROM test;   // 1.3 

は私が間違って何をしているのですか?

注:これはAWS RDS経由のpostgresインスタンスです。変更はコマンドラインではなく、パラメータグループメニューで行う必要があります。

+3

'lc_numeric'は、SQLが* input *の数値をどのように受け入れるかを変更しません。 *関数* ['to_number'](https://www.postgresql.org/docs/current/static/functions-formatting.html)が小数点記号と桁区切り記号をどのように使用するかを変更することができます。数字の入力方法を変更する方法はないと思います(これは通常、DBではなくアプリケーションのユーザーインターフェイス部分で行われます)。確認してくださいhttp://stackoverflow.com/questions/8933782/how-does-the-locale-setting-lc-numeric-work-in-postgresql?rq=1 – joanolo

+0

率直に言ってバグだと思います。私たちも入力のためにLC_NUMERICを尊重するか、まったくサポートしません。数値表現を往復することができないのはかなり悲惨です。 –

+1

@CraigRinger私はそうは思わない。 'to_char'と' to_number'はどちらも 'lc_numeric'を尊重し、型入出力関数はそうではありません。したがって、 'to_char(3.14、 '99D99'):: double precision'のように、ミックスしない限り、"往復 "は細かい単語にする必要があります。 –

答えて

0

lc_numericは、数値型の文字列の入力および出力形式には影響しないため、型キャストの結果にも影響しません。

変換機能にのみ影響しますto_charおよびto_number。小数点記号については、lc_numericDフォーマット指定子の意味を決定します。

+0

私はそうは思わない - 例がありますか?私は日常的に 'de_DE.UTF8'を使用していて、' psql'には10進数のカンマをまだ見ていません。 –

+0

私はpsqlを使用していません - ちょうどそれと思っていましたが(明らかに私は間違っていました) –

関連する問題