[pgsql-jp: 33563] Re: ひらがなのORDER BY

rootbeer @ par.odn.ne.jp rootbeer @ par.odn.ne.jp
2004年 7月 8日 (木) 23:32:29 JST


広岡です。

> ソート順に関係のあるパラメータはLC_COLLATEですが,7.3では上記の方法で
> は表示されません.pg_controldataコマンドを使って調べてください.表示結
> 果の中に,
> 
> LC_COLLATE:                           C
> 
> とあればOKです.それでもソート結果がおかしい場合は,OSの問題かも知れな
> いので,Cロケールを設定した上でsortコマンドで同じデータをテキストファ
> イルにいれてソートして,異常がないかどうか確認してみたら良いと思います.

試したところ、
LC_COLLATE:                           en_US.UTF-8
LC_CTYPE:                             en_US.UTF-8
と表示されました。
initdbで--no-localeしたつもりでしたが、できていなかったようです。

マニュアルの「7.1. ロケールのサポート」には
http://www.postgresql.jp/document/pg732doc/admin/charset.html
「一部のロケールカテゴリでは、その値をデータベースクラスタの存続時間に対
して固定しなければならないものがあります。なぜなら、initdb の実行後はこ
れらの値を変更できなくなるからです。LC_COLLATE と LC_CTYPE がこのカテゴ
リに入ります。これらはインデックスの並び替え順に影響をおよぼすため、固定
されていなければなりません。」

とあるので、LC_COLLATEはinitdbし直さないと変更できないようですね。
今回は全てphpでデータ処理しているので、そちら側で対応する事にします。

回答して下さった石井さん、ありがとうございました。


ところで、LC_COLLATEその他がja_JP.eucJP等でなくても日本語が正常に
扱えるのであれば、Postgresqlのロケールサポートって
何に使用するのでしょうか?




pgsql-jp メーリングリストの案内