9 个解决方案
#1
楼主说你的具体问题,实际操作和你的描述是一样的。
#2
给出具体的数据示例及期望结果
#3
我是不大会写,逻辑大概就是这样的
#4
数据例如
10360073070002992320
10360073070002992321
10360073070002992322
10360073070002992322
10360073070002992323
10360073070002992323
10360073070002992324
10360073070002992325
10360073070002992325
尾号22.23.25有重复,现在需要修改,
前面1036007307不变,后面十位通过调用一个加密的方法 得出输出参数生成。
例如想要得到结果为:
10360073070002992320
10360073070002992321
10360073070002992322 或者此条也重置
1036007307+重置编号1
10360073070002992323 或者此条也重置
1036007307+重置编号2
10360073070002992324
10360073070002992325 或者此条也重置
1036007307+重置编号3
10360073070002992320
10360073070002992321
10360073070002992322
10360073070002992322
10360073070002992323
10360073070002992323
10360073070002992324
10360073070002992325
10360073070002992325
尾号22.23.25有重复,现在需要修改,
前面1036007307不变,后面十位通过调用一个加密的方法 得出输出参数生成。
例如想要得到结果为:
10360073070002992320
10360073070002992321
10360073070002992322 或者此条也重置
1036007307+重置编号1
10360073070002992323 或者此条也重置
1036007307+重置编号2
10360073070002992324
10360073070002992325 或者此条也重置
1036007307+重置编号3
#5
我这边有个没写好的方法
Declare
Temp varchar2(4096)
Begin
Loop循环(
应在查询到的重复数据里循环,这块不会写)
调用生成编号方法f 得到编号 temp;
Update a set a.ano=substr(a.ano,0,10)//temp;
Commit;
End loop;
End;
大概就是这个意思
Declare
Temp varchar2(4096)
Begin
Loop循环(
应在查询到的重复数据里循环,这块不会写)
调用生成编号方法f 得到编号 temp;
Update a set a.ano=substr(a.ano,0,10)//temp;
Commit;
End loop;
End;
大概就是这个意思
#6
如果都这样,你只要截取后面十位然后group by 。 having count(*)>1 就行了呀
#7
看错了你是改数据,先查出最大的一个值为多少, 然后写个游标查出重复的数据rowid(可以用分析函数查询),然后用最大的值每次循环+1 update
#8
不会,没懂
#9
我写好了,谢谢好心人
#1
楼主说你的具体问题,实际操作和你的描述是一样的。
#2
给出具体的数据示例及期望结果
#3
我是不大会写,逻辑大概就是这样的
#4
数据例如
10360073070002992320
10360073070002992321
10360073070002992322
10360073070002992322
10360073070002992323
10360073070002992323
10360073070002992324
10360073070002992325
10360073070002992325
尾号22.23.25有重复,现在需要修改,
前面1036007307不变,后面十位通过调用一个加密的方法 得出输出参数生成。
例如想要得到结果为:
10360073070002992320
10360073070002992321
10360073070002992322 或者此条也重置
1036007307+重置编号1
10360073070002992323 或者此条也重置
1036007307+重置编号2
10360073070002992324
10360073070002992325 或者此条也重置
1036007307+重置编号3
10360073070002992320
10360073070002992321
10360073070002992322
10360073070002992322
10360073070002992323
10360073070002992323
10360073070002992324
10360073070002992325
10360073070002992325
尾号22.23.25有重复,现在需要修改,
前面1036007307不变,后面十位通过调用一个加密的方法 得出输出参数生成。
例如想要得到结果为:
10360073070002992320
10360073070002992321
10360073070002992322 或者此条也重置
1036007307+重置编号1
10360073070002992323 或者此条也重置
1036007307+重置编号2
10360073070002992324
10360073070002992325 或者此条也重置
1036007307+重置编号3
#5
我这边有个没写好的方法
Declare
Temp varchar2(4096)
Begin
Loop循环(
应在查询到的重复数据里循环,这块不会写)
调用生成编号方法f 得到编号 temp;
Update a set a.ano=substr(a.ano,0,10)//temp;
Commit;
End loop;
End;
大概就是这个意思
Declare
Temp varchar2(4096)
Begin
Loop循环(
应在查询到的重复数据里循环,这块不会写)
调用生成编号方法f 得到编号 temp;
Update a set a.ano=substr(a.ano,0,10)//temp;
Commit;
End loop;
End;
大概就是这个意思
#6
如果都这样,你只要截取后面十位然后group by 。 having count(*)>1 就行了呀
#7
看错了你是改数据,先查出最大的一个值为多少, 然后写个游标查出重复的数据rowid(可以用分析函数查询),然后用最大的值每次循环+1 update
#8
不会,没懂
#9
我写好了,谢谢好心人