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

Sorting a VARCHAR column with numbers and letters

我有一列包含从 1 到 12 的数字,还可以包含字母 W、E、S。我希望该列按数字排序 (1,2,3,4...),然后列出所有用字母记录。

所以,在我做任何事情之前,专栏的顺序如下:

1、10、11、12、2、3、4、5 ... E、S、W

所以我在Stack overflow中找到了这个问题How do I sort a VARCHAR column in SQL server that contains numbers? 我尝试了所有答案,但在所有示例中均收到错误,但以下内容除外:

Order by (Total +0) ASC

现在数字 (1, 2, 3...) 的顺序是正确的,但我现在遇到的问题是它显示所有带有字母值的行在所有带有数字的行之前。

如何让数据库在所有数字值之后显示字母值?

您可以使用 case 表达式 首先将结果分成 2 组并按其排序,然后根据您的现有条件进行排序:

order by case when Total + 0 > 0 then 0 else 1 end, Total + 0;