Oracleのソートと並び順について

【この記事の所要時間 : 約 3 分

Oracleの文字データにおける並び順はたまに話題になるので備忘録として残しておきたい。まず、Oracleのソートには大きく2種類ある。
 1.バイナリソート(デフォルト)
 2.NLSソート
どちらのソートが使われているかは、以下のコマンドで確認できる。

SQL> select * from v$nls_parameters where parameter=’NLS_SORT’;

バイナリソートとは、データベースのキャラクタセットにおけるマッピングアドレスの値の順序で並べ替える方法である。データベースのキャラクタセットは、以下のコマンドで確認できる。

SQL> select * from V$NLS_parameters where parameter=’NLS_CHARACTERSET’;

マッピングアドレスの値(例はa)は、以下のコマンドで確認できる。(16進数)

SQL> select dump(‘a’,16) from dual;

このマッピングアドレスの値が小さい方が先にくるのが、バイナリソートである。
NLSソートとは、辞書順ソートである。どのような並び順かというと、文字列の並び順に関する規格である「ISO 14651」に準拠した並び順である。
ということで、基本はバイナリソートであり、文字データにおける並び順は、キャラクタセットに依存しているということである。
データベースのキャラクタセットにはSJIS、EUC、UTF8などがあり、それぞれマッピングアドレスの値は異なるので注意が必要である。
またよく聞くのが他のシステムと同じ並び順にしたいというものであるが、これはちょっとやっかいである。真剣にやるならば、自分でキャラクタセットを定義してやる必要がある。その自作のキャラクタセットをデータベースに設定すれば独自の並び順にすることは可能である。この自作のキャラクタセットを作るには、Locale Builder というものを使うと良い。
教えて! goo – OracleとAccessの出力順の違い

Oracleの現場を効率化する100の技
鈴木 健吾 玉置 雄大 塩原 浩太 小林 修 大森 慎司 内村 友亮
技術評論社
売り上げランキング: 52,888
スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告