select replace('P/thumb/0203/1100025t.jpg','P/thumb/0203/','P/thumb/0202/') "result" from dual; result ------------------------- P/thumb/0202/1100025t.jpg已选择 1 行。
update 表名 set 字段=replace('P/thumb/0203/1100025t.jpg','P/thumb/0203/','P/thumb/0202/'); commit;
result
-------------------------
P/thumb/0202/1100025t.jpg已选择 1 行。
set 字段=replace('P/thumb/0203/1100025t.jpg','P/thumb/0203/','P/thumb/0202/');
commit;
1100025t.jpg部分是不断在变化的。'0203'部分可能是'0204'、'0205'等等。我现在只要把这个字段的所有 '0203'(也可能是'0204'等)这4个字符替换成'0202',有什么办法么?
set 字段=replace('P/thumb/0203/1100025t.jpg','P/thumb/0203/','P/thumb/0202/') where substr('P/thumb/0203/1100025t.jpg',9,4)=0203;
commit;
set 字段=replace(字段,'P/thumb/0203/','P/thumb/0202/')
where substr('P/thumb/0203/1100025t.jpg',9,4)=0203;
commit;其实他基本上写对了,只是忘记了一个小小的地方。赫赫。
不过由于'P/thumb/0203/'中的'0203'也是在改动的,所以每次执行只能修改0203的,而0204、0205就不行了,能不能把这个SQL再改进点?在SQL SERVER里可以用stuff来实现,但这个函数在ORACLE里没有555
set 字段='P/thumb/0202/'||substr(字段,14)
where substr(字段,9,4)>=0203 and substr(字段,9,4)<=0209;
我再重新描述一边吧:
现在有表item,字段itempath。
这个itempath字段的内容如下:
P/thumb/0203/1100025t.jpg
P/thumb/0203/1100026t.jpg
P/thumb/0202/1100027t.jpg
P/thumb/0202/1100028t.jpg
P/thumb/0205/1100029t.jpg
P/thumb/0205/1100030t.jpg
.....我现在需要把这个字段改成:
P/thumb/0202/1100025t.jpg
P/thumb/0202/1100026t.jpg
P/thumb/0202/1100027t.jpg
P/thumb/0202/1100028t.jpg
P/thumb/0202/1100029t.jpg
P/thumb/0202/1100030t.jpg实现这个功能应该如何做?