在 Oracle 中,只需使用ORDER BY
不对版本号进行排序。
我的Version_Number
字段被声明为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中有hierarchyid的替代品吗?
有谁能想出一个 SQL 来准确地对这些版本进行排序吗?
我已经看过下面提到的帖子(附有链接)。所以请不要告诉我这篇文章是重复的。
SQL 按版本“编号”排序,不同长度的字符串
如何使用 SQL Server 查询对“版本号”列进行排序
Sql Server 中的版本号排序
mysql 版本号排序
还有很多。