有一表num_tab;表中有如下两列:
id(primarykey) char[], number char[];
101 02502587651111
102 02502587652222
103 02502587653333
~~~ ~~~~~~~~~~~~~~现由于number中每列都是如下结构'0250258765****',除了前面的部分,后面*表示的每个记录都不同。
意愿是把此列改为'0258765****',即把前面的025025变成025; 据说要设置变量,个人现在是傻得一条一条去update,非常傻
~~请教如何实现此操作。3x
分不够明天再加100
id(primarykey) char[], number char[];
101 02502587651111
102 02502587652222
103 02502587653333
~~~ ~~~~~~~~~~~~~~现由于number中每列都是如下结构'0250258765****',除了前面的部分,后面*表示的每个记录都不同。
意愿是把此列改为'0258765****',即把前面的025025变成025; 据说要设置变量,个人现在是傻得一条一条去update,非常傻
~~请教如何实现此操作。3x
分不够明天再加100
OPER@TL>select * from test;ID NUMBERS
-------------------- ------------------------------------------------------------
101 02502587651111
102 02502587652222
103 02502587653333OPER@TL>update test
2 set numbers='025'||substr(numbers,7);已更新3行。OPER@TL>select * from test;ID NUMBERS
-------------------- ------------------------------------------------------------
101 02587651111
102 02587652222
103 02587653333OPER@TL>
create table num_tab
(
id char(3)
,snumber char(20)
)insert into num_tab values('101','02502587651111');
insert into num_tab values('102','02502587652222');
insert into num_tab values('103','02502587653333');
commit;select id,snumber,case when substr(snumber,1,3)=substr(snumber,4,3) then substr(snumber,4,length(snumber)-3) end
from num_tab--result:
101 02502587651111 02587651111
102 02502587652222 02587652222
103 02502587653333 02587653333 --updating
update num_tab set snumber=case when substr(snumber,1,3)=substr(snumber,4,3) then substr(snumber,4,length(snumber)-3) else snumber end
UPDATE TABLE_NAME
SET NUMBERS = SUBSTR(NUMBERS,1,3)||SUBSTR(NUMBERS,7);如果是4个字符:
UPDATE TABLE_NAME
SET NUMBERS = SUBSTR(NUMBERS,1,4)||SUBSTR(NUMBERS,9);其他的情况自己根据这些SQL改一下就行。
set "number"=substr("number",1,3)||substr("number",7)