gpt4 book ai didi

oracle - 版本比较

转载 作者:行者123 更新时间:2023-12-05 05:19:31 24 4
gpt4 key购买 nike

我有大约 2000 多个站点维护运行 Oracle11g 的内部应用程序的不同版本。

表有一个维护版本的参数。 COl_1 的值如 5.2.4 或 6.86 或 7.2.0.1 等。我需要比较两个站点版本,例如 (6.2.3 of site1大于 site2 可能是 6.8)。数据类型是 Varchar2。

什么是最简单的方法?有什么内置的吗?根据结果​​,我必须执行一些插入和合并。

那么,如何在oracle sql查询中比较5.2.4 > 6.2.1.4呢?

提前致谢。

最佳答案

您可以使用以下查询将包含版本的字符串拆分为单独的部分,然后您可以对记录进行排序和比较。

SELECT x,
to_number(regexp_substr( x, '\d+', 1, 1)) As x_1,
to_number(regexp_substr( x, '\d+', 1, 2)) As x_2,
to_number(regexp_substr( x, '\d+', 1, 3)) As x_3,
to_number(regexp_substr( x, '\d+', 1, 4)) As x_4,
to_number(regexp_substr( x, '\d+', 1, 5)) As x_5,
to_number(regexp_substr( x, '\d+', 1, 6)) As x_6
FROM table123
order by
2 nulls first,
3 nulls first,
4 nulls first,
5 nulls first,
6 nulls first,
7 nulls first

演示:http://sqlfiddle.com/#!4/60df0/4

|          X | X_1 | X_2 |    X_3 |    X_4 |    X_5 |    X_6 |
|------------|-----|-----|--------|--------|--------|--------|
| 1.1.1 | 1 | 1 | 1 | (null) | (null) | (null) |
| 1.1.15 | 1 | 1 | 15 | (null) | (null) | (null) |
| 2.7.1 | 2 | 7 | 1 | (null) | (null) | (null) |
| 2.7.10 | 2 | 7 | 10 | (null) | (null) | (null) |
| 3.1..1 | 3 | 1 | 1 | (null) | (null) | (null) |
| 4.1.1 | 4 | 1 | 1 | (null) | (null) | (null) |
| 6.4.2 | 6 | 4 | 2 | (null) | (null) | (null) |
| 9.1 | 9 | 1 | (null) | (null) | (null) | (null) |
| 9.1.2 | 9 | 1 | 2 | (null) | (null) | (null) |
| 9.1.10 | 9 | 1 | 10 | (null) | (null) | (null) |
| 10.1.1.2.4 | 10 | 1 | 1 | 2 | 4 | (null) |
| 15.1.3 | 15 | 1 | 3 | (null) | (null) | (null) |
| 21.1.1 | 21 | 1 | 1 | (null) | (null) | (null) |
| 23.1.2 | 23 | 1 | 2 | (null) | (null) | (null) |
| 23.1.10 | 23 | 1 | 10 | (null) | (null) | (null) |
| 30.1.1 | 30 | 1 | 1 | (null) | (null) | (null) |
| 31.1.1 | 31 | 1 | 1 | (null) | (null) | (null) |
| 41.1 | 41 | 1 | (null) | (null) | (null) | (null) |

关于oracle - 版本比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46023661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com