按文本ASC排序SQL,在最后位置显示数字

时间:2011-01-10 14:37:23

标签: sql sql-order-by

我有一个SQL查询,我需要在ASC中对结果进行排序,但我需要将数字和空格放在结果的最后位置,而不是第一个。

SELECT title FROM movie ORDER BY title ASC

使用上面的代码我得到的标题从[空格],0-9,A,B,C开始......我需要这样的表格:A,B,C,...,Z,[其他]

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

这有点像黑客,但它应该有用。

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

我们的想法是让你的订单子句通过在ZZZ之前加上数字来转换以数字开头的项目。至于以空格开头的项目,您可能只想用LTRIM清理它们。