誰でも、PostgreSQLのロケールと数値型の振る舞いについて知ることができますか?私たちはイタリアのロケールで働いています。小数点のカンマ区切りです。設定ではpostgresql.conf
ロケール設定LC_NUMERICはPostgreSQLでどのように動作しますか?
# These settings are initialized by initdb, but they can be changed.
lc_messages = 'it_IT.UTF-8' # locale for system error message
# strings
lc_monetary = 'it_IT.UTF-8' # locale for monetary formatting
lc_numeric = 'it_IT.UTF-8' # locale for number formatting
lc_time = 'it_IT.UTF-8' # locale for time formatting
何もしません!それは日付と一緒に非常に適切なやり方で動作しますが、数値型は小数点のためにDOT区切りのままです。
[email protected]:~# uname -a
Linux server 2.6.32-36-generic-pae #79-Ubuntu SMP Tue Nov 8 23:25:26 UTC 2011 i686 GNU/Linux
[email protected]:~# dpkg -l | grep postgresql
ii postgresql-8.4 8.4.9-0ubuntu0.10.04 object-relational SQL database, version 8.4
ii postgresql-client 8.4.9-0ubuntu0.10.04 front-end programs for PostgreSQL (supported)
EDIT
異なるスコープ内のロケールの実装に問題がある持って:DB、サーバスクリプト、OSとクライアント側を。 ロケールのフォーマットを避け、en_ENロケールを使用することにしました。ロケールの書式は、出力の瞬間にのみ適用されます。
ありがとうございます!はい私はto_charと他の方法とconfigの変更に対するサーバーの再読み込みを認識しています。しかし、例えば "to_char"のような "というフレーズは、"例えば "の意味は、それがどこに適用され、どこにはない正確なリストですか?パフォーマンスを犠牲にしてもロケール設定を尊重するために、すべてのSELECTクエリの自動キャストを実行できますか? – Igor
@Igor:私は*できますが、狂気はその道を潜んでいます。ロケールが変更されたキャストを使用するすべてのコードを破壊する可能性があります。したがって、ロケールを意識したテンプレートパターンを使用する書式設定関数にのみ適用されます。あなたは私が含まれているリンクでそれらのリストを見つける。 –
あなたがすでに狂気の道を歩いてしまったコンピュータパス上に足を踏み入れると、多かれ少なかれ、あまり変わらないでしょう;)実際に私は狂気を避けるために探しています。私はコードで実装する必要があります、それは確かにエラーです!別の可能性は、あなたの言葉ではかなり怒っています、ビューでテーブルをスクリーニングし、内部をキャストすることです(これも避けたい)。 – Igor