【发布时间】:2014-10-12 16:38:31
【问题描述】:
我有一系列 独特 字符串,其中包含数字,有时还包含数字和一个字母,其中的一个示例如下:
- 1X
- 2X
- 2 年
- 12X
- 20
- 21
数字总是在字母之前。什么是 ORDER BY (T-SQL) 子句解决方案来生成一个列表,它会给我上面展示的顺序?
我尝试过使用
LEN(fieldName), fieldname - 除了 20 和 21 也可以。我尝试将字符串表示为整数,但 CAST 在转换中失败过程。
【问题讨论】:
-
所以你想要一个按数字排序的列表,然后按字母排序?
-
字母字符是否总是像您的示例一样位于值的末尾,或者它们可以在值中的任何位置?
-
正确的 Elias 和“数字总是在字母之前”。
-
ORDER BY CASE WHEN ISNUMERIC(column)=1 THEN 1 ELSE 0 END,column -
上述解决方案只关注第一个数字,即如果列表为 21、12X、1X,则顺序将更改为 12X、1X、21。然后出现不同的问题。
标签: sql string sql-order-by