我正在寻找一些关于按数字排序的帮助,但数值有前导字符( - )。
例如 列顺序#
--- 5
- 8
-6
一个简单的ORDER BY Order#DESC给了我一个无序的输出。在排序数据时如何忽略前导字符,例如上面的订单#?
答案 0 :(得分:0)
使用H2数据库语法和函数,以及声明为:
的表create table foo(bar varchar(10));
包含行:
'---2'
'--3'
'-1'
以下查询:
select bar from foo
order by cast (replace(bar, '-') as int);
给我结果:
BAR
-1
---2
--3
这似乎是你追求的目标。
免责声明:这可能不是执行此操作的最佳方式,因为计算值未编入索引。对于只是订购一个合理大小的结果集,它并不重要。
答案 1 :(得分:0)
我提出的解决方案类似于给出的答案,
我可以将列数据转换为int并按照方式对其进行排序,即
按顺序排序((ColumnName)AS INT)DESC;
这成功地忽略了领先的字符并按数字对其进行排序