【SQL】文字列+数字で構成されるソート

testカラムのABC1,ABC2,ABC3,ABC11,ABC12,ABC13のデータを並び替えるとき、
select * from test_table ORDER BY test;
を実行すると、
ABC1,ABC11,ABC12,ABC13,ABC2,ABC3の順番になってしまう。

そこで、以下のSQLを実行する。
select * from test_table ORDER BY RIGHT( CONCAT(  '00', SUBSTRING(test, 4 ) ) , 2 );
ABC1,ABC2,ABC3,ABC11,ABC12,ABC13の順番になる。

各コマンドの役割は以下のとおりである。

moji_num

 

これで文字列+すうじの組み合わせや桁数の合わない数字のソートも可能である。