news表中有三列,其中数据内容都一样
sort1,  sort2,  sort3
,1,2,3  ,1,2,3  ,1,2,3现在想全部更新为,
也就是sort1的内容是第1个逗号和第2个逗号间的内容
就是sort2的内容是第2个逗号和第3个逗号间的内容
就是sort3的内容是第3个逗号后的内容
sort1,  sort2,  sort3
1         2       3请教更新语句

解决方案 »

  1.   

    update news 
    set sort1=substring(sort1,2,2),
    sort2=substring(sort2,4,4),
    sort3=substring(sort3,6,6);
      

  2.   

    news表中有三列,其中数据内容都一样 
    类似
    sort1,  sort2,  sort3 
    ,1,2,3  ,1,2,3  ,1,2,3 
    用charindex找第2个逗号的位置比较麻烦
      

  3.   


    update news 
      set sort1=substring(sort1,2,2), 
          sort2=substring(sort2,4,4), 
          sort3=substring(sort3,6,6); 
      

  4.   


    declare @tb table(sort1 varchar(10),  sort2 varchar(10),  sort3 varchar(10))
    insert @tb
    select ',1,2,3', ' ,1,2,3', ' ,1,2,3 'select parsename(sort1,3) as sort1,parsename(sort2,2) as sort2,parsename(sort3,1) as sort3
    from 
    (
    select replace(stuff(sort1,1,1,''),',','.') as sort1,
             replace(stuff(sort2,1,1,''),',','.') as sort2,
             replace(stuff(sort3,1,1,''),',','.') as sort3
    from @tb
    ) a
    /*
    sort1                                                                                                                            sort2                                                                                                                            sort3                                                                                                                            
    -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- 
    1  
    */
      

  5.   


    declare @aa varchar(200)select @aa='1,2,3,'
    create table #cc([Sid] [int] IDENTITY (1, 1),des varchar(20))
    declare @len int
    select @len=CHARINDEX(',',@aa,1)while(@len>0)
    begin
    insert into #cc (des) values(substring(@aa,1,@len-1))
    select @aa=substring(@aa,@len+1,len(@aa))
    select @len=CHARINDEX(',',@aa,1)
    end
    update tb set sort1=des where sid=1
    update tb set sort2=des where sid=2
    update tb set sort3=des where sid=3
      

  6.   

    update tb a,#cc b set a.sort1=b.des where b.sid=1
      

  7.   

    declare @tb table(sort1 varchar(15),  sort2 varchar(10),  sort3 varchar(10))
    insert @tb
    select ',1,2,3', ' ,1,2,3', ' ,1,2,3 '
    update @tb set sort1=replace(substring(sort1,1,charindex(',',sort1,2)),',',''),
                            sort2=replace(substring(sort2,charindex(',',sort2,2)+1, charindex(',',sort2,charindex(',',sort2,2)+1)-charindex(',',sort2,2)),',',''),
                            sort3=replace( right(sort3,len(sort3)- charindex(',',sort3,charindex(',',sort3,2)+1)),',','')
    select * from @tb
    /*
    sort1           sort2      sort3      
    --------------- ---------- ---------- 
    1               1          3 */
      

  8.   

    news表中有三列,其中数据内容都一样 
    类似 
    sort1,  sort2,  sort3 
    ,1,2,3  ,1,2,3  ,1,2,3 现在想全部更新为, 
    也就是sort1的内容是第1个逗号和第2个逗号间的内容 
    就是sort2的内容是第2个逗号和第3个逗号间的内容 
    就是sort3的内容是第3个逗号后的内容 
    sort1,  sort2,  sort3 
    1        2      3 请教更新语句
      

  9.   

    create table tb(sort1 varchar(10),  sort2 varchar(10),  sort3  varchar(10))
    insert into tb select ',1,2,3',',1,2,3',',1,2,3'
    go
    --你要的update语句:
    update tb set sort1=substring(sort1,2,len(sort1)-charindex(',',sort1,2)-2),
    sort2=substring(sort2,charindex(',',sort2,2)+1,len(sort2)-charindex(',',sort2,charindex(',',sort2,2)+1)),
    sort3=right(sort3,len(sort3)-charindex(',',sort3,charindex(',',sort2,2)+1))
    go
    select * from tb
    go
    drop table tb
    /*
    sort1      sort2      sort3
    ---------- ---------- ----------
    1          2          3
    */
      

  10.   

    ---------------------------
    SQL Server 企业管理器
    ---------------------------
    [Microsoft][ODBC SQL Server Driver][SQL Server]向 substring 函数传递了无效的 length 参数。 
    ---------------------------
    确定   帮助   
    ---------------------------