oracle查询数字在逗号拼接的字符串中,使用Oracle SQL查找逗号分隔字符串中的最大数字...

我有一个有两列的表:

OLD_REVISIONS |NEW_REVISIONS

-----------------------------------

1,25,26,24 |1,26,24,25

1,56,55,54 |1,55,54

1 |1

1,2 |1

1,96,95,94 |1,96,94,95

1 |1

1 |1

1 |1

1 |1

1,2 |1,2

1 |1

1 |1

1 |1

1 |1

>对于每一行,都会有一个文档修订列表(以逗号分隔)

>逗号分隔列表在两列中可能相同但订单/排序可能不同 – 例如

2,1 | 1,2

我想找到OLD_REVISIONS列中最高版本低于NEW_REVISIONS中最高版本的所有实例

以下符合该标准

OLD_REVISIONS |NEW_REVISIONS

-----------------------------------

1,2 |1

1,56,55,54 |1,55,54

>我尝试使用MINUS选项的解决方案(将表连接到自身),但即使列表相同但顺序错误,它也会返回差异

>我尝试了GREATEST函数(即最大(new_Revisions)< great(old_revisions)),但我不确定为什么最大(OLD_REVISIONS)总是只返回逗号分隔值.它不返回最大值.我怀疑它是在比较字符串,因为列是VARCHAR.

此外,MAX功能需要一个数字.

还有另一种方法可以实现上述目标吗?我正在寻找一个纯SQL选项,所以我可以打印出结果(或者可以打印出结果的PL / SQL选项)

编辑

抱歉没有提到这个但是对于NEW_REVISIONS我确实在表中有数据,其中每个修订都在一个单独的行中:

"DOCNUMBER" "REVISIONNUMBER"

67 1

67 24

67 25

67 26

75 1

75 54

75 55

75 56

78 1

79 1

79 2

83 1

83 96

83 94

只是为了给出一些内容,几周前我怀疑有修改消失了.

为了对此进行调查,我决定对所有文档的所有修订进行计数,然后拍摄快照以便稍后进行比较,看看是否确实缺少修订.

我拍摄的快照包含以下列:

docnn,count,revisions

使用listagg函数将修订存储在逗号分隔的列表中.

我现在遇到的麻烦是现场表,新版本已经添加,所以当我使用MINUS比较主表和快照时,我会有所不同,因为

主表中的新修订版.

即使在实际表中,修订是单独的行,在快照表中我没有单独的行.

我想的是以相同格式重新创建快照的唯一方法,并比较它们发现主表中的最大修订是否低于快照表中的最大修订版(因此我试图找出如何找出最大值在逗号分隔的字符串中)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值