2011-01-10 31 views
5

Tôi có truy vấn SQL và tôi cần đặt kết quả theo ASC, nhưng tôi cần số và khoảng trống ở vị trí cuối cùng của kết quả, không phải trước tiên.Thứ tự SQL theo văn bản ASC, hiển thị số ở vị trí cuối

SELECT title FROM movie ORDER BY title ASC 

Sử dụng mã ở trên Tôi nhận tiêu đề bắt đầu từ [khoảng trắng], 0-9, A, B, C ... Tôi cần biểu mẫu này: A, B, C, ..., Z, [bất cứ điều gì khác]

Cảm ơn bạn đã được trợ giúp.

Trả lời

6
ORDER BY CASE 
      WHEN LOWER(LEFT(title, 1)) BETWEEN 'a' AND 'z' THEN 0 
      ELSE 1 
     END, 
     title 
+0

Chỉ thay đổi mà tôi đã thực hiện là 'LEFT()' không được công nhận bởi Sqlite, nhưng đã làm việc tuyệt vời. –

1

Đây là một chút hack nhưng nó sẽ hoạt động.

SELECT title FROM movie 
ORDER BY CASE WHEN title LIKE '[0-9]%' THEN 'ZZZ' + title ELSE title END ASC 

Ý tưởng là đặt mệnh đề đơn hàng của bạn biến đổi các mục bắt đầu bằng số bằng cách thêm chúng vào ZZZ. Đối với các mục bắt đầu với một không gian, bạn có thể chỉ muốn làm sạch chúng với LTRIM.

+0

Tôi nghĩ rằng câu trả lời của zerkms là tốt hơn và khuyên bạn nên đi tuyến đường đó. Tôi sẽ để lại điều này ở đây trong trường hợp bất cứ ai muốn một cruder thay thế :-) –

+0

ok, zerkmns giải pháp hoạt động tuyệt vời, cảm ơn cho các mẹo LTRIM .. – gustyaquino

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