我有一个 varchar 列,其中包含混合数据字符串、整数、小数、空白字符串和空值。我想以与 Excel 相同的方式对列进行排序,首先对数字进行排序,然后对字符串进行排序。例如:
- 1
- 2
- 3
- 3.5
- 10
- 11
- 12
- 艾伦
- 鲍勃
- 卡尔
- (空白/空)
- (空白/空)
我尝试过像“ORDER BY my_column+0”这样的东西,它可以正确地对数字进行排序,但不能对字符串进行排序。我希望有人可能知道实现此目的的有效方法。
MartinofD 的建议在很大程度上是有效的,如果我稍微扩展一下,我就能得到我想要的:
SELECT a FROM test ORDER BY a IS NULL OR a='', a<>'0' AND a=0, a+0, a;
虽然很丑,我不确定是否有更好的选择。