要求:前面4位数量不变,4位之后有2位数的,在2位数前加00原来的 改后的
1001 ---1001
1009 ---1009
100901 ---10090001
100902 ---10090002
100903 ---10090003
100904 ---10090004
100905 ---10090005
100906 ---10090006
1101 ---1101
110101 ---11010001
110102 ---11010002
110103 ---11010003
110110 ---11010004
1102 ---1102
1131 ---1131
113101 ---11310001
113102 ---11310002
113103 ---11310003
113104 ---11310004
113105 ---11310005
UPDATE TB SET COL1=LEFT(COL1,4)+RIGHT('0000'+RIGHT(COL1,2),4)
WHERE LEN(COL1)=6
我感觉stuff也可以的,可是如何弄呢?
1001 ---1001
1009 ---1009
100901 ---10090001
100902 ---10090002
100903 ---10090003
100904 ---10090004
100905 ---10090005
100906 ---10090006
1101 ---1101
110101 ---11010001
110102 ---11010002
110103 ---11010003
110110 ---11010004
1102 ---1102
1131 ---1131
113101 ---11310001
113102 ---11310002
113103 ---11310003
113104 ---11310004
113105 ---11310005
UPDATE TB SET COL1=LEFT(COL1,4)+RIGHT('0000'+RIGHT(COL1,2),4)
WHERE LEN(COL1)=6
我感觉stuff也可以的,可是如何弄呢?
下例通过在第一个字符串 (abcdef) 中删除从第二个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,创建并返回一个字符串。 SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO下面是结果集:---------
aijklmnef (1 row(s) affected)
SET COL1=STUFF(COL1,5,2,'00'+RIGHT(COL1,2))
WHERE LEN(COL1)=6
insert into tb values('1001')
insert into tb values('1009')
insert into tb values('100901')
insert into tb values('100902')
goselect id,new_id = case when len(id) = 6 then stuff(id , 5,0,'00') else id end from tbdrop table tb/*
id new_id
---------- ------------
1001 1001
1009 1009
100901 10090001
100902 10090002(所影响的行数为 4 行)
*/