要求:前面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也可以的,可是如何弄呢?

解决方案 »

  1.   

    示例
    下例通过在第一个字符串 (abcdef) 中删除从第二个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,创建并返回一个字符串。 SELECT STUFF('abcdef', 2, 3, 'ijklmn')
    GO下面是结果集:--------- 
    aijklmnef (1 row(s) affected)
      

  2.   

    UPDATE TB 
    SET COL1=STUFF(COL1,5,2,'00'+RIGHT(COL1,2))
    WHERE LEN(COL1)=6
      

  3.   

    create table tb(id varchar(10))
    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 行)
    */