0

VARCHAR 列を持つ MySQL テーブルがあります。列には数字のみが含まれており、100、101、1001 などの数値で並べ替えることができるようにしたいと考えています。現在、100、1001、101 などのように並べ替えています。テーブルを変更して照合属性を追加するだけでよいと聞きました。数値順にソートされます。「照合を表示」と入力すると、varchar 列を数値列として扱うための照合タイプが表示されません。

だから私の質問は、この varchar 列を数値的にソートするためにどの照合を使用できますか?

4

2 に答える 2

2

このvarchar列に数値のみが含まれる場合は、整数列にする必要があります。それ以外の場合は、次のことができます

ORDER BY CAST(col AS SIGNED) 

デモを見る

于 2013-04-18T19:18:46.460 に答える
0

数値を数値として比較する組み込みの照合はありません。

独自のものを開発することはできますが、共有ホスティングや同様のものに展開するのは難しいでしょう.

並べ替えにインデックスを使用しなくても問題ない場合は、整数にキャストできます。

SELECT  *
FROM    mytable
ORDER BY
        CASE field REGEXP '^-?[0-9]$' THEN CAST(field AS SIGNED INTEGER) END
于 2013-04-18T19:25:53.433 に答える