--建立测试数据 create table t( cname varchar2(100) ) insert into t select '2004第2号' from dual union all select '(2004)第2号' from dual union all select '(2004)第2号' from dual union all select '(2004)第2号' from dual;--测试数据 select * from t1 2004第2号 2 (2004)第2号 3 (2004)第2号 4 (2004)第2号 --执行更新 update t set cname=(case when substr(cname,1,1)='(' then replace(replace('(2004)第2号','(','('),')',')') when substr(cname,1,1)='(' then cname else replace(cname,substr(cname,1,4),'('||substr(cname,1,4)||')') end); --执行查询 select * from t --查询结果 1 (2004)第2号 2 (2004)第2号 3 (2004)第2号 4 (2004)第2号
有规律啊,用字后一定是(,第字前一定是),我在程序里实现了,但是写成SQL就不会了啊!!
--建立测试数据 create table t( cname varchar2(100) ) delete from t insert into t select '重百用(2004)第32号' from dual union all select '重百用2004第320号' from dual union all select '重用2005第1358号' from dual union all select '重轻工用(2005)第244号' from dual;--测试数据 select * from t1 重百用(2004)第32号 2 重百用2004第320号 3 重用2005第1358号 4 重轻工用(2005)第244号--执行更新 update t set cname=(case when instr(cname,'(',1)>0 then replace(replace(cname,'(','('),')',')') when instr(cname,'(',1)>0 then cname else replace(cname,substr(cname,instr(cname,'第',1)-4,4),'('||substr(cname,instr(cname,'第',1)-4,4)||')') end); --执行查询 select * from t --查询结果 1 重百用(2004)第32号 2 重百用(2004)第320号 3 重用(2005)第1358号 4 重轻工用(2005)第244号
重百用(2004)第32号
重百用2004第320号
重用2005第1358号
重轻工用(2005)第244号
希望结果:
重百用(2004)第32号
重百用(2004)第320号
重用(2005)第1358号
重轻工用(2005)第244号
create table t( cname varchar2(100) )
insert into t
select '2004第2号' from dual union all
select '(2004)第2号' from dual union all
select '(2004)第2号' from dual union all
select '(2004)第2号' from dual;--测试数据
select * from t1 2004第2号
2 (2004)第2号
3 (2004)第2号
4 (2004)第2号
--执行更新
update t set
cname=(case when substr(cname,1,1)='(' then replace(replace('(2004)第2号','(','('),')',')')
when substr(cname,1,1)='(' then cname
else replace(cname,substr(cname,1,4),'('||substr(cname,1,4)||')') end);
--执行查询
select * from t
--查询结果
1 (2004)第2号
2 (2004)第2号
3 (2004)第2号
4 (2004)第2号
create table t( cname varchar2(100) )
delete from t
insert into t
select '重百用(2004)第32号' from dual union all
select '重百用2004第320号' from dual union all
select '重用2005第1358号' from dual union all
select '重轻工用(2005)第244号' from dual;--测试数据
select * from t1 重百用(2004)第32号
2 重百用2004第320号
3 重用2005第1358号
4 重轻工用(2005)第244号--执行更新
update t set
cname=(case when instr(cname,'(',1)>0 then replace(replace(cname,'(','('),')',')')
when instr(cname,'(',1)>0 then cname
else replace(cname,substr(cname,instr(cname,'第',1)-4,4),'('||substr(cname,instr(cname,'第',1)-4,4)||')') end);
--执行查询
select * from t
--查询结果
1 重百用(2004)第32号
2 重百用(2004)第320号
3 重用(2005)第1358号
4 重轻工用(2005)第244号