怎么update替换掉某些词 如果在tb表的col列中能找到city表中的ctname,就把col换成ctname?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是,比方col值是'杭州市西湖区杭州市江干区',city里有个'杭州市',那就把col更新成'西湖区江干区' 是这样吗?你加了hint管用么,我用你的视图更新方式总是报ora01779,关联列不能更新,这里新建了个列col2来更新,完了可以再将空的处理merge into 表tb ausing 表city b on (instr(a.col,b.ctname)>1)when matched then update set a.col2=substr(a.col,instr(a.col,b.ctname)+length(b.ctname)) 视图更新报ora01779应该是版本问题吧,我用自己可以执行的代码在别人的库上用这种方式更新时碰到过,在表上建个主键就行了。那个hint的忽略唯一性的。merge的时候update的列不能和on的列是同一个,再建1个列可以避免,不过最好不改表结构吧 改成merge试一下参考:http://www.cnblogs.com/highriver/archive/2011/08/02/2125043.html 为什么要加hint,你想绕过什么 merge的时候update的列在on条件里的话,会报错“ora-38104 无法更新on子句中引用的列:……”,不知道怎么避免。因为要更新的表很多,不可能每张表都建个列去中转的 SELECT a.col a1,REPLACE(a.col,b.ctname) b1 FROM tb a,city b WHERE INSTR(a.col,b.ctname)>=1你这个句子 a和b 用条件关联吧, 你这样写 会不会弄成笛卡尔积, 要是笛卡尔积肯定慢 一定要这么执行就创建函数索引在INSTR(a.col,b.ctname) 不要加hint,加hint后,10g用不到索引、 关联条件是a.col like '%'||b.ctname||'%',本来就用不上索引吧? C#连接oracle数据库问题 p/l sql新建用户 同时安装了9i和10g的客户端,想卸载9i的客户端 求助!!!查询时间段内的每一天(年月日) 如何通过设置ORACLE用户和密码只能自己访问?UP 有分 求助:在oracle表中取特定的字段,如何实现??? varchar(2)的内容如何更新到BLOB中去?? 一个完全外查询(full outer)的问题 日志文件损坏问题 oracle的exp命令也可以授权的么? oracle 两个date日期相减,怎么得到天数 求一个与多表left join等价的where语句,自己用(+)写了个但不太对
merge into 表tb a
using 表city b on (instr(a.col,b.ctname)>1)
when matched then
update set a.col2=substr(a.col,instr(a.col,b.ctname)+length(b.ctname))
参考:
http://www.cnblogs.com/highriver/archive/2011/08/02/2125043.html
SELECT a.col a1,REPLACE(a.col,b.ctname) b1
FROM tb a,city b
WHERE INSTR(a.col,b.ctname)>=1你这个句子 a和b 用条件关联吧, 你这样写 会不会弄成笛卡尔积, 要是笛卡尔积肯定慢