文字列型にある数字をソートしたい
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;
コメント