2011年3月10日木曜日

文字列で入れたコードを数字のようにソートしたい

DBのクエリで困った。
次のようなテーブルがある。

code, name
----------
10,AAA
20,BBB
101,CCC
1000,DDD
A100,XXX

codeでソートをかけるんだけど、普通は↓。

SELECT * FROM table_name ORDER BY code;


code, name
----------
10,AAA
101,CCC
20,BBB
1000,DDD
A100,XXX

コードを数字として評価してほしい要望がきまして↓。


SELECT * FROM table_name ORDER BY CAST(code AS INTEGER);

エラー
(A100がキャストできない。A100がなければ可能だけどね)


それではこれ↓でどう?

SELECT * FROM table_name ORDER BY LPAD(code, 10, '0');


code, name
----------
10,AAA
20,BBB
101,CCC
1000,DDD
A100,XXX

もっといい方法(ただし簡単にできて)ないかしら。


0 件のコメント: