用数字和字母对VARCHAR列进行排序

  • 本文关键字:排序 VARCHAR 数字 mysql
  • 更新时间 :
  • 英文 :


我有一个从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;

最新更新