其中一个字段中值为:
A1;A2;A3;A4;A5;A6;A7;A8;A9;A10;A11;A12;A12;A14;A15;A16;A17我要修改其中一个值比如我要将A10修改为B10通过SQL语句怎么修改。求助。

解决方案 »

  1.   


    declare @str varchar(1000)
    set @str = ''  --你上边的字串select stuff(replace(';' + @str,';A10;',';B10;'),1,1,'')
      

  2.   


    declare @str varchar(1000)
    set @str = ''  --你上边的字串select stuff(stuff(replace(';' + @str,';A10;',';B10;'),1,1,''),len(@str)+1,1,'')
      

  3.   

    尝试了2楼的方法不可行,请问3楼怎么用SQL分段截取。在修改。
      

  4.   


    declare @str varchar(1000)
    set @str = ''  --你上边的字串select stuff(stuff(replace(';' + @str + ';',';A10;',';B10;'),1,1,''),len(@str)+1,1,'')--少加了个';'
      

  5.   

    declare @str varchar(1000)
    set @str='A1;A2;A3;A4;A5;A6;A7;A8;A9;A10;A11;A12;A12;A14;A15;A16;A17'
    select replace(@str,'A10','B10')
      

  6.   

    declare @str varchar(8000)
    set @str = 'A1;A2;A3;A4;A5;A6;A7;A8;A9;A10;A11;A12;A12;A14;A15;A16;A17'
    select REPLACE(@str,'A10','B10')
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    A1;A2;A3;A4;A5;A6;A7;A8;A9;B10;A11;A12;A12;A14;A15;A16;A17(1 行受影响)
      

  7.   


    use tempdb;declare @str varchar(1000)
    set @str = 'A1;A2;A3;A4;A5;A6;A7;A8;A9;A10;A11;A12;A12;A14;A15;A16;A17';select stuff(stuff(replace(';' + @str + ';',';A10;',';B10;'),1,1,''),len(@str)+1,1,'');
      

  8.   

    --直接替换
    update tb set col = replace(col , 'A10' , 'B10')--如果要考虑周全则为:
    update tb set col = substring(replace(',' + col + ',', ',A10,' , ',B10,'),2,len(col)+1)