在Oracle中,仅使用ORDER BY
不对版本号进行排序。我的Version_Number
字段被声明为a,VARCHAR
并且无法更改。例如:以下版本:
1.20
1.9
1.18
1.13
1.5
1.11
2.0
1.8
1.3
1.2
1.1
1.0
1.10
应该排序为
2.0
1.20
1.18
1.13
1.11
1.10
1.9
1.8
1.5
1.3
1.2
1.1
1.0
我研究了几篇文章,但似乎都没有真正达到我的目的,或者答案是针对SQL Server等的,而不是针对Oracle的。我遇到了一个看起来像是在工作的特定sql。
select version_number from mytable
order by lpad(version_number, 4) desc;
以这种方式对版本进行排序:
1.20
1.18
1.13
1.11
1.10
2.0
1.9
1.8
1.5
1.3
1.2
1.1
1.0
我相信此sql语句适用于SQL Server
:
select version_number from mytable
order by cast ('/' + replace(version_number , '.', '/') + '/' as hierarchyid) desc;
但是,这不适用于Oracle。Oracle中是否有替代architectureid的替代方法?
有谁能提出SQL来对这些版本进行准确排序?
我已经看过下面提到的帖子(链接)。因此,请不要告诉我这篇文章是重复的。
SQL按版本“数字”排序,长度可变。
如何使用SQL Server查询一般性地对“版本号”列进行
排序 SQL Server中的版本号排序
mysql对版本号
等进行排序。
这是做到这一点的一种方法。首先按前面.
的数字排序,然后按后面的数字排序.
select version_number
from mytable
order by substr(version_number, 1, instr(version_number,'.')-1) desc
,length(substr(version_number, instr(version_number,'.')+1)) desc
,substr(version_number, instr(version_number,'.')+1) desc
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句