数値文字列を正しくソートする方法です。
以下のテーブルをサンプルとします。
ID | NAME |
---|---|
1 | 鈴木 |
2 | 斎藤 |
3 | 山下 |
10 | 田川 |
11 | 高橋 |
12 | 上田 |
ID列はVARCHAR2(文字列型)とします。
サンプル
上記テーブルをID列で単純にORDER BYしてみます。
- 実行例
- SQL> SELECT * FROM m_shain ORDER BY id; ID NAME ----- ---------- 1 鈴木 10 田川 11 高橋 12 上田 2 斎藤 3 山下
想定したソート順になりません。こういう場合は以下のようにします。
- 実行例
- SQL> SELECT * FROM m_shain ORDER BY TO_NUMBER(id); ID NAME ----- ---------- 1 鈴木 2 斎藤 3 山下 10 田川 11 高橋 12 上田
想定した結果になりました。(^^♪
解説
- 数値文字列でソートする場合は、TO_NUMBER関数で数値型にしてソートを行います。
- MAXやMINを行う時も同様に、TO_NUMBERを使用します。