[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 メーリングリストの案内