189 8069 5689

oracle怎么批量替换 oracle批量替换数据

oracle字段值批量替换

1)instr()函数的格式  (俗称:字符查找函数)

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的白山网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串)

格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] )   /   instr(源字符串, 目标字符串, 起始位置, 匹配序号)

解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置,-1表示从尾部开始倒数第1个)开始在string1检索,检索第nth_appearance(几)次出现string2。

SELECT A2.id,A1.name 

from A2 left join

A1 on A2.codeall=A1.code

where LENGTHB(codeall)-LENGTHB(replace(codeall,',','')) = 0

union all

SELECT A2.id,A11.name||','||A12.name 

from A2 left join

A1 A11 on substr(A2.codeall,1,instr(A2.codeall,',')-1)=A11.code left join

A1 A12 on substr(A2.codeall,instr(A2.codeall,',')+1,instr(A2.codeall,',',-1,1)-1)=A12.code

where LENGTHB(codeall)-LENGTHB(replace(codeall,',','')) = 1

union all

SELECT A2.id,A11.name||','||A12.name ||','||A13.name 

from A2 left join

A1 A11 on substr(A2.codeall,1,instr(A2.codeall,',')-1)=A11.code left join

A1 A12 on substr(A2.codeall,instr(A2.codeall,',')+1,instr(A2.codeall,',',1,2)-1)=A12.code

A1 A13 on substr(A2.codeall,instr(A2.codeall,',',1,2)+1,instr(A2.codeall,',',-1,1)-1)=A13.code

where LENGTHB(codeall)-LENGTHB(replace(codeall,',','')) = 2

union all

SELECT A2.id,A11.name||','||A12.name ||','||A13.name ||','||A14.name 

from A2 left join

A1 A11 on substr(A2.codeall,1,instr(A2.codeall,',')-1)=A11.code left join

A1 A12 on substr(A2.codeall,instr(A2.codeall,',')+1,instr(A2.codeall,',',1,2)-1)=A12.code

A1 A13 on substr(A2.codeall,instr(A2.codeall,',',1,2)+1,instr(A2.codeall,',',1,3)-1)=A13.code

A1 A14 on substr(A2.codeall,instr(A2.codeall,',',1,3)+1,instr(A2.codeall,',',-1,1)-1)=A14.code

where LENGTHB(codeall)-LENGTHB(replace(codeall,',','')) = 3

如何批量修改oracle数据库中某一个表中的某一列数据?

最好的方法是批量修改,即每次修改5000条(一次修改不要超过一万条,否则影响性能). 虽然在11g中,我们也可以选择使用merge命令,但你的这种情况最好先修改一部分然后看看影响,毕竟在生产环境作这样的操作风险很大。如果是误操作,最好还是请DBA来恢复,虽然这样做会被挨骂,但总比错上加错,最后连挨骂的机会都没有要好得多。如果对这些修改真的有信心,而只是从性能考虑,那可以用下面的方法(pk_col 是表的主键

1、构建临时表进行主键关联更新

需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。

做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新操作:

ps:c,d是需要更新的操作,e,f是条件。必须强调的是id必须是主键

1、构建临时表进行主键关联更新

需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。

做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新操作:

ps:c,d是需要更新的操作,e,f是条件。必须强调的是id必须是主键

oracle数据库字段内容如何批量替换?

直接用update语句替换即可。

如test表中有如下数据:

现要将sal中的数字都替换成10,用以下语句:

update test set sal=10;

commit;

更新后结果:

注意:执行update语句后,需要进行commit,也就是提交,这样才会使update生效。


名称栏目:oracle怎么批量替换 oracle批量替换数据
链接分享:http://cdxtjz.cn/article/hjejdi.html

其他资讯