15

SELECT test_column FROM test_table ORDER BY test_column私にこれを与える:

1
12
123
2
3

なぜだめですか:

1
2
3
12
123

文字列を数字のように並べ替えるにはどうすればよいですか?

4

4 に答える 4

20

試す

SELECT test_column 
FROM test_table 
ORDER BY cast(test_column as int)

ただし、列の種類を正しいものに変更することを検討する必要があります。

于 2013-07-20T13:18:23.447 に答える
2

ソートは機能しています。これは、辞書式ソート (アルファベット順) です。その列にはテキスト(char、varchar、...)タイプがあるように見えるため、取得する順序はテキストであり、数値ではありません。

数値ソートが必要な場合は、数値列タイプ (int など) を使用します。(または、列を適切にキャストします。)

于 2013-07-20T13:18:13.257 に答える
2

列のタイプがvarcharまたは類似のものであるかどうかを確認します。数値ではなく、文字列値で並べ替えられているようです。列に数値のみが含まれる場合は、int型にすることをお勧めします。

于 2013-07-20T13:19:18.633 に答える