Heroku PostgreSQL カナでソートする

半角カナでソートする要件を実装した際に、アよりオが先に来てしまう事象にハマった。原因は、Postgresのロケールがen-USだったことにより、期待する照合順序にならなかった。

ロケールを確認

deliba::DATABASE=> SHOW LC_COLLATE;
 lc_collate
-------------
 en_US.UTF-8
(1 行)


deliba::DATABASE=> SHOW LC_CTYPE;
  lc_ctype
-------------
 en_US.UTF-8
(1 行)

order by にCOLLATE オプションを追加

SELECT *
FROM your_table
ORDER BY kana_column COLLATE "ja_JP.utf8";

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA