MySQLの「文字列」型を「数値」としてソート

2023/03/01

2023年度開発小技シリーズ 第1弾

今回は、MySQLの「文字列」型を「数値」としてソートについてご紹介します!

問題発見

数値varchar型で格納している場合、普通にORDER BYでソートすると、以下のような意図しない順序になることがあります。

number
-------------
1
10
2
20
...

これは数値の順番ではないなぁ。。。


問題解決

これを「ORDER BY (number + 0)」でソートしてやると、数値としてソートされます。

number
-------------
1
2
10
20
...

これは数値の順番ですね。


まとめ

数値varchar型でORDER BYする時。数値“文字”と認識されます。最初の一位目の“文字”から並べます。

(number + 0)を使って、数値と認識されます。順番で並べます。


これでORDER BYする時文字列の数値を順番で並べることができます!

担当者:サイ