1. ホーム
  2. mysql

[解決済み] SQLオーダー文字列を数値で表示

2022-04-22 10:47:58

質問

として保存された数字があります。 VARCHAR をMySQLのデータベースに保存しています。私はそれらを INT その他諸々の事情により

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

データベースには

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

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

1 10 2 3 4 5 6 7 8 9

数値の昇順で表示させるには?

どのように解決するのですか?

可能であれば、とにかく数字しか格納しないのであれば、カラムのデータ型を数字に変更する必要があります。

それができない場合は、カラムの値を 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 */