2013-07-20 33 views
6

SELECT test_column FROM test_table ORDER BY test_column mang lại cho tôi điều này:SQL - ORDER BY không hoạt động đúng cách?

1 
12 
123 
2 
3 

Tại sao không:

1 
2 
3 
12 
123 

@JosephPla Bạn có những điểm, cảm ơn bạn. Làm thế nào tôi có thể sắp xếp các chuỗi như số?

+7

Bạn đang đặt bởi chuỗi và không theo giá trị. –

+0

Loại cột test_column nào? – slavoo

+0

Thực hiện điều gì đó giống như SELECT test_column FROM test_table ORDER BY chuyển đổi (int, test_column) –

Trả lời

12

Hãy thử

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

Nhưng bạn nên xem xét việc thay đổi loại cột để những cái đúng.

+0

Đáng chú ý rằng 'CAST' sẽ không sử dụng bất kỳ chỉ mục nào. – Kermit

2

Sắp xếp hoạt động. Đó là một loại từ vựng (chữ cái). Có vẻ như cột đó có loại văn bản (char, varchar, ...), do đó thứ tự bạn sẽ nhận được là văn bản chứ không phải là số.

Nếu bạn muốn sắp xếp số, hãy sử dụng loại cột số (ví dụ: int). (Hoặc đúc cột một cách thích hợp.)

2

Kiểm tra xem loại cột có phải là varchar hay tương tự. Có vẻ như nó đang được sắp xếp theo giá trị chuỗi, không phải bằng giá trị số. Nếu cột chỉ chứa số thì tốt hơn nên gõ int.

3

này làm việc cho tôi: -

+1

cảm ơn đã làm việc cho tôi. – Harsha

Các vấn đề liên quan