SQL Order By忽略前导字符

时间:2017-08-07 15:35:32

标签: sql

我正在寻找一些关于按数字排序的帮助,但数值有前导字符( - )。

例如 列顺序#

--- 5

- 8

-6

一个简单的ORDER BY Order#DESC给了我一个无序的输出。在排序数据时如何忽略前导字符,例如上面的订单#?

2 个答案:

答案 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;

这成功地忽略了领先的字符并按数字对其进行排序