[MYSQL]文字列タイプの数字を正しい姿勢で並べ替える
今日ソートで問題が発生しました.データ型がvarcharの数字であれば、ソートの過程で、私たちが望んでいる効果ではありません.例:
ネットで検索すると、よくある方法は次のとおりです.
数値に変換
時に入って見たのは知識欲があるので、そうです.物語はまだ終わっていません.このフィールドに空き文字がある場合はnullまたはnull.上の方法はまだ完璧ではありません.
次のような状況になります
空の文字は+0が0で、0+0も0なので、このとき不安定な0と空の上下のジャンプが発生します.では、本当に正しい姿はどうなのでしょうか.
大きなスクリーンを見てください
sql
select * from table order by field_varchar ;
field_varchar
0
1
11
100
2
22
3
33
ネットで検索すると、よくある方法は次のとおりです.
sql
select * from table order by field_varchar+0;
数値に変換
field_varchar
0
1
2
3
11
22
33
100
時に入って見たのは知識欲があるので、そうです.物語はまだ終わっていません.このフィールドに空き文字がある場合はnullまたはnull.上の方法はまだ完璧ではありません.
次のような状況になります
field_varchar
0
1
2
3
11
22
33
100
空の文字は+0が0で、0+0も0なので、このとき不安定な0と空の上下のジャンプが発生します.では、本当に正しい姿はどうなのでしょうか.
大きなスクリーンを見てください
sql
select * from table order by length(field_varchar),field_varchar;