使用Oracle SQL查找逗号分隔字符串中的最大数字
我有一个有两列的表: OLD_REVISIONS |NEW_REVISIONS ----------------------------------- 1,25,26,24 |1,24,25 1,56,55,54 |1,54 1 |1 1,2 |1 1,96,95,94 |1,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,54 >我尝试使用MINUS选项的解决方案(将表连接到自身),但即使列表相同但顺序错误,它也会返回差异 还有另一种方法可以实现上述目标吗?我正在寻找一个纯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比较主表和快照时,我会有所不同,因为 即使在实际表中,修订是单独的行,在快照表中我没有单独的行. 我想的是以相同格式重新创建快照的唯一方法,并比较它们发现主表中的最大修订是否低于快照表中的最大修订版(因此我试图找出如何找出最大值在逗号分隔的字符串中) 解决方法请享用.select xmlcast(xmlquery(('max((' || OLD_REVISIONS || '))') RETURNING CONTENT) as int) as OLD_REVISIONS_max,xmlcast(xmlquery(('max((' || NEW_REVISIONS || '))') RETURNING CONTENT) as int) as NEW_REVISIONS_max from t ; (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |