在Oracle中,仅使用
我相信这个 SQL 语句适用于 SQL Server:
然而,这种方法在Oracle中无法使用。在Oracle中是否有hierarchyid的替代方法?
是否有人能够提供一个SQL来准确地排序这些版本呢?
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 sort by version "number", a string of varying length
How Can I Sort A 'Version Number' Column Generically Using a SQL Server Query
Version number sorting in Sql Server
mysql sorting of version numbers
还有很多其他的帖子。