update table set c1=substring(aa,1,1),......,,aa =''

解决方案 »

  1.   

    update table set c4=c3,c3=c2,c2=c1,c1=aa,aa=null
    这样行吗?
      

  2.   

    如果我的aa是這樣的
    aa
    9,10,11,12
    也就是說,不僅僅是一位
      

  3.   

    我喜欢用存储过程
    因为可以把复杂的问题简单化解决你的问题的存储过程大概如下:
    ---------------------------------
    CREATE PROCEDURE [cp_split_column]
     ASDECLARE   @ipos int,
    @aa varchar(250),
    @c1 varchar(10),
             @c2 varchar(10),
             @c3 varchar(10),
             @c4 varchar(10),
             @i int,
             @id int  ----!!!DECLARE abc CURSOR FOR SELECT id,aa FROM myTable
    OPEN abc
    FETCH NEXT FROM abc INTO @id,@aaWHILE (@@FETCH_STATUS = 0)
    BEGIN
      SET @c1=''
      SET @C2=''
      SET @c3=''
      SET @C4=''
      SET @i=1
      IF LEN(LTRIM(@aa))>0
      BEGIN
    SET @ipos=CHARINDEX(',',@aa,1)
    WHILE @ipos>0
    BEGIN
               IF @i=1 SET @c1=LEFT(@aa,@ipos-1)
               ELSE IF @i=2 SET @c2=LEFT(@aa,@ipos-1)
               ELSE IF @i=3 SET @c3=LEFT(@aa,@ipos-1)
               ELSE         SET @c4=LEFT(@aa,@ipos-1)
                         
               SET @i=@i+1
               IF @i>4 BREAK
               SET @aa=SUBSTRING(@aa,@ipos+1,250)
               SET @ipos=CHARINDEX(',',@aa,1)    
             END
             IF @i<5
             BEGIN
               IF @i=1 SET @c1=@aa
               ELSE IF @i=2 SET @c2=@aa
               ELSE IF @i=3 SET @c3=@aa
               ELSE         SET @c4=@aa
             END
      END
      UPDATE myTable
             SET c1=@c1,
                 c2=@c2,
                 c3=@c3,
                 c4=@c4
             WHERE id=@id  FETCH NEXT FROM abc INTO @id,@aa
    END
    CLOSE abc
    DEALLOCATE abc
      

  4.   

    参见:
    http://www.csdn.net/expert/topic/807/807556.xml?temp=.9903833
      

  5.   

    用charindex取,的位置就可以了。