2013-07-20 20 views
6

SELECT test_column FROM test_table ORDER BY test_column bana verir bu:SQL - ORDER BY düzgün çalışmıyor mu?

1 
12 
123 
2 
3 

Neden:

Sen nokta var @JosephPla
1 
2 
3 
12 
123 

, teşekkür ederim. Dizeleri sayı gibi nasıl sıralayabilirim?

+7

Sen dize tarafından değere göre değil, sipariş. –

+0

Ne tür si sütunu test_column? – slavoo

+0

SELECT gibi bir şey yapın Test_column FROM test_table SİPARİŞ BY dönüştürün (int, test_column) –

cevap

12

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

deneyin Ama doğru olanları sütun türlerini değiştirerek içine bakmak gerekir.

+0

"CAST" ın herhangi bir dizin kullanmayacağını dikkate almaya değer. – Kermit

2

Bu sıralama çalışıyor. Sözlükik bir sıralama (alfabetik). Bu sütunda bir metin (char, varchar, ...) tipi var, bu yüzden alacağınız sıralama, metinsel değil, sayısal.

Sayısal bir sıralama isterseniz, sayısal bir sütun türü kullanın (ör. Int). (Ya sütunu uygun attı.)

2

Sütunun türü varchar veya benzeri bir şey olup olmadığını kontrol edin. Sayısal değere değil, dize değerine göre sıralanıyor gibi görünüyor. Sütun yalnızca sayılar içeriyorsa, int türünde daha iyi olmalıdır.

3

Bu beni çalışır: -

+1

Teşekkürler benim için de çalıştı. – Harsha