MySQLでデータベースのカラムに入っている数字が並んでくれない状況に陥ってはいませんか?
MySQLでは、関数を使うことで数字を順番に並ばせることができるようになります。
カラムの型を数字に変更する
例えば、以下のようなcat
テーブルがあるとします。
現状として、level
(レベル)が思い通り低い順番(昇順)に並んでくれていないとします。
【user】テーブル
name | level |
---|---|
クロ | 12 |
しょーぐん | 144 |
あいうえお | 23 |
マモル | 231 |
あああ | 3 |
Xx_GoD_xX | 999 |
一見1
から始まりそれ通り並んでいるように見えますが、「あああ」というユーザが一番低いのでうまく昇順に並べれていません。
数字が思い通りに並んでくれないときは大体カラムの型が「文字列として認識されています。
そこで、下記のような記述をすることでカラムの型を数字に変更させ、数字と認識されて思い通りに並んでくれます。
SELECT * FROM user ORDER BY CAST(level AS SIGNED)
CAST()による効果
CAST()
の引数に並び替えの基準とするカラム名を入れることで、様々な型への変更が可能になります。
今回は、カラムの型を数字としたかったので、CAST()
の引数にAS SIGNED
を付け加えました。
それにより、上記のテーブルはlevel
(レベル)通り昇順に並んでくれるようになりました。
user_name | level |
---|---|
あああ | 3 |
クロ | 12 |
あいうえお | 23 |
しょーぐん | 144 |
マモル | 231 |
Xx_GoD_xX | 999 |
参考サイト
以下のサイトも参考にすることによって、いろんな型への変更方法を知ることができます。