2011-01-10 22 views
5

我有一個SQL查詢,我需要在ASC中排序結果,但我需要數字和空格在結果的最後一個位置,而不是第一個。通過文本ASC的SQL排序,顯示最後位置的數字

SELECT title FROM movie ORDER BY title ASC 

使用上面的代碼,我得到了冠軍,起始自[空格],0-9,A,B,C ......我需要這種形式:A,B,C,...,Z, [其他]

感謝您的任何幫助。

回答

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

只有改變我讓它做的是'LEFT()`不被Sqlite識別,但工作很好。 – 2013-11-12 19:28:31

1

這是一個黑客,但它應該工作。

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

這個想法是讓您的訂單子句通過將它們與ZZZ預先匹配來轉換以數字開頭的項目。至於以空格開頭的項目,您可能只想用LTRIM清理它們。

+0

我認爲zerkms的答案更好,建議你走這條路。我會留在這裏,以防萬一任何人想要一個更酷的選擇:-) – 2011-01-10 14:48:19

相關問題