2010-11-17 37 views
6

Tôi có truy vấn sau đây trong SQLite:Hãy so sánh chuỗi như số trong SQLite3

SELECT * FROM t1 ORDER BY t1.field 

đâu t1.field là một cột văn bản có chứa số. Có khả năng bắt buộc SQLite xem xét các giá trị của t1.field dưới dạng số thay vì chuỗi (không có làm ALTER TABLE) không? Hiện tại, loại sắp xếp là một chuỗi thuần túy, vì vậy, 10 sắp đến trước 2.

Cảm ơn bạn.

Trả lời

16

Vâng, tìm ra giải pháp:

SELECT * FROM t1 ORDER BY t1.field + 0 

Phần + 0 dường như để buộc chuyển đổi lên vị trí số

+0

cảm ơn bạn này đã giúp tôi, ra khỏi sự quan tâm về những gì nền tảng mà bạn đang sử dụng SQLite trên? –

+7

CHỌN * TỪ T1 ĐƠN HÀNG CỦA CAST (t1.field AS INTEGER) –

+0

Bạn thậm chí có thể sắp xếp dữ liệu hỗn hợp. Nếu sử dụng 'ORDER BY t1.field + 0, t1.field', điều này trước tiên sẽ sắp xếp tất cả các số, sau đó tất cả các chuỗi không thể được chuyển đổi thành một số ->' ["không", "có", "1", "5", "10", 50 "]' – relet

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