我有一个SQL查询,我需要在ASC中对结果进行排序,但我需要将数字和空格放在结果的最后位置,而不是第一个。
SELECT title FROM movie ORDER BY title ASC
使用上面的代码我得到的标题从[空格],0-9,A,B,C开始......我需要这样的表格:A,B,C,...,Z,[其他]
感谢您的帮助。
答案 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清理它们。