SQL 順序文字列を数値として質問する

SQL 順序文字列を数値として質問する

VARCHARMySQL データベースに番号を保存しています。INT他の状況により、番号を作成できません。

ソート時に数値ではなく文字として扱われます。

データベースには

1 2 3 4 5 6 7 8 9 10...

私のページには、次のような順序付きリストが表示されます。

1 10 2 3 4 5 6 7 8 9

数字の昇順で表示させるにはどうしたらよいでしょうか?

ベストアンサー1

とにかく数値のみを保存する場合は、可能であれば列のデータ型を数値に変更する必要があります。

それができない場合は、列の値をinteger 明示的に

select col from yourtable
order by cast(col as unsigned)

または暗黙的に例えば、数値への変換を強制する数学演算の場合

select col from yourtable
order by col + 0

ちなみに、MySQL は文字列を左から右に変換します。例:

string value  |  integer value after conversion
--------------+--------------------------------
'1'           |  1
'ABC'         |  0   /* the string does not contain a number, so the result is 0 */
'123miles'    |  123 
'$123'        |  0   /* the left side of the string does not start with a number */

おすすめ記事