2013-07-20 40 views
6

SELECT test_column FROM test_table ORDER BY test_columnは私にこれを与える:SQL - ORDER BYが正しく動作していませんか?

1 
12 
123 
2 
3 

なぜ:あなたはポイントを得た@JosephPla

1 
2 
3 
12 
123 

は、ありがとうございました。数字のような文字列をどのようにソートできますか?

+7

あなたは文字列ではなく値によって発注されています。 –

+0

どの列がtest_columnですか? – slavoo

+0

SELECT test_column FROM test_table ORDER BY convert(int、test_column) –

答えて

12

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

を試してみてくださいしかし、あなたは正しいものに列の型を変更することになります。

+0

'CAST'はインデックスを使用しません。 – Kermit

2

ソートが機能しています。辞書順(アルファベット順)です。その列はtext(char、varchar、...)型を持つように見えるので、あなたが得る順序はテキストで数値ではありません。

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

2

カラムのタイプがvarcharかそれに類するものか確認してください。数値ではなく文字列値で並べ替えられているようです。列に数字だけが含まれる場合は、int型の方がよいでしょう。

3

これは私の仕事: -

+1

ありがとうございました。 – Harsha

関連する問題