※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Javaソート豆知識


投稿者: K.M
日付: 2007-09-26 23:57

下記Gさんの過去メールを抜粋



お疲れ様です、Gです。
こっちはその2です。
今度は少し難易度が上がります。その分、使用頻度も減ります。

いつも大変お世話になっております。
Gです。

使い慣れると意外と手軽なJavaソート。
昔は自分でソートアルゴリズム書いてましたよ。
(大学で習った講義の中で社会に出てから、一番役に立ったのはアルゴリズムだな~。まともに聞いてなかったけど)

ま、そんなJavaソートですが、漢字を含んだ文字列は文字コード順、
オラクルSQLのORDERBY句によるソートは音読み順となってソートが行われるようです。


例:文字配列 "0","世","中\","1" があった場合、

  • オラクルのORDERBY句
"0","1","世","中\"
  • javaソート
"0","1","中\","世"

となってしまいます。
これは文字コードソートの仕様だそうで、回避方針は調べた限り見つかりませんでした。

(ちなみに↑の例にてエクセル2003でデータの並び替えを行った場合Javaソートと同じ結果となりました)

漢字のソートを行いたい場合、SQLのソートを利用する
又は、文字コード順によるソートとなる事を事前に確認することが必要なようです。
ちなみに、ソートが食い違うのは漢字のみで英数や平仮名カタカナのソートは文字コードの関係上、なんとかなるかもしれません。
(一応正規表現とほぼ同じ順序で並んでるので)


以上、情報共有でした。


客先からよく来るんですよね、この要望。
ソートを行うときSQLだとおっそいから、DBアクセスしないようにしてくれ。とかそんなんが。
その場合、文字コード順になりますよ。と一言、釘を刺しておきましょう。