PostgreSQL のソート順とロケールの設定

PostgreSQL を使っていて ロケールの設定によっては ソート順が想定とは違う結果になることがあります。

ソート順に関するロケールの LC_COLLATE は データベース作成時にしか変更できないと思っていました。

[参考]
PostgreSQLのロケール(lc collate,lc ctype)の確認と変更

次のように SELECT 時に設定したり。

db=# SELECT * FROM tab1 ORDER BY col1 COLLATE "C" DESC;

後から列単位で変更もできるようです。

db=# ALTER TABLE tab1 ALTER COLUMN col1 TYPE VARCHAR COLLATE "C";

マニュアルに登場するのが 9.1 からなので おそらくその辺りで対応されたのではないかと。

[参考]
SELECT - PostgreSQL 9.1.5文書
ALTER TABLE - PostgreSQL 9.1.5文書

Google サイト内検索

Amazonアソシエイト