我有一个从1到12的数字列,也可以包括字母W, E, s。我希望该列以数字排序(1,2,3,4…),然后列出所有带有字母的记录。
那么,在我做任何事情之前,列的排序是这样的:
1,10,11,12,2,3,4,5…E, S, W
所以我在堆栈溢出中发现了这个问题,我如何在SQL服务器中排序包含数字的VARCHAR列?我尝试了所有的答案,除了下面的例子外,所有的例子都出错了:
Order by (Total +0) ASC
现在数字(1,2,3…)的顺序是正确的,但我现在遇到的问题是,它显示所有具有字母值的行在所有具有数字的行之前。
如何让数据库在所有数字值之后显示字母值?
您可以使用大小写表达式首先将结果分成两组并按此排序,然后您的现有条件:
order by case when Total + 0 > 0 then 0 else 1 end, Total + 0;