SQLで文字列のカラムにある数字をソートする方法

※当サイトではアフィリエイト広告を利用しています

文字列型にある数字をソートしたい

DBのカラムが文字列の型だけど、中身のデータが数字が入っている、ということがありました。

このとき、数字の昇順で取得をしたくてorder byで指定をしたのですが、いい感じで並んでくれませんでした。

1→2→3→10→20→
となって欲しいのが
1→10→2→20→3
の順になってしまいました。

そこで、数値の順で取得する方法をメモします。

文字列型の数字をソートするクエリ

では、文字列型のカラムに挿入された数字をソートするにはどういった指定をすれば良いか?
データベースの種類ごとに整理してみました。

oracle

SELECT * FROM table_name ORDER BY TO_NUMBER(text_number);

mysql

SELECT * FROM table_name ORDER BY cast(text_number as SIGNED) asc;

postgresql

SELECT * FROM table_name ORDER BY cast(text_number as int)

SQLite

SELECT * FROM table_name ORDER BY text_number + 0;

コメント