哎呀,可能没有说清楚:
现在表结构:
xh,cj1m,cj1,cj2m,cj2,cj
---------
 1,null,null,null,null,①101英语②239语文
 2,null,null,null,null,①101英语②221数学需要转化为
表:
xh,cj1m,cj1,cj2m,cj2,cj
---------
 1,101,英语,239,语文,①101英语②239语文
 2,101,英语,221,数学,①101英语②221数学不知道这样是不是清楚一点阿,

解决方案 »

  1.   

    55555555
    怎么没人哩我呢?
    To:zheninchangjiang(我爱燕子) 
    成绩表@@
    ??我只是用了一个例子,其实是别的表的,只不过用了一下这个名称。
    "①101英语②239语文"这个字符串不知道怎么去拆阿
      

  2.   

    如果你的cj编码都是3位,学科都是两位
    你可以
    update 表 set cjlm=substring(cj,2,3),cjl=substring(cj,5,2),cj2m=substring(cj,8,3),cj2=substring(cj,11,2)
      

  3.   

    --先建个拆分的函数:
    create function dbo.f_1(@s varchar(100),@n int)
    returns varchar(100)
    as
    begin
      declare @s1 varchar(100),@s2 varchar(100),@s3 varchar(100),@s4 varchar(100)
      select @s1='',@s2=substring(@s,2,charindex('②',@s)-2)
      while left(@s2,1)>='0' and left(@s2,1)<='9'
      begin
        set @s1=@s1+left(@s2,1)
        set @s2=stuff(@s2,1,1,'')
      end
      select @s3='',@s4=stuff(@s,1,charindex('②',@s),'')
      while left(@s4,1)>='0' and left(@s4,1)<='9'
      begin
        set @s3=@s3+left(@s4,1)
        set @s4=stuff(@s4,1,1,'')
      end
      return case @n when 1 then @s1 when 2 then @s2 when 3 then @s3 when 4 then @s4 end
    end
    go
    --再调用:
    update t set cj1m=dbo.f_1(cj,1),cj1=dbo.f_1(cj,2),cj2m=dbo.f_1(cj,3),cj2=dbo.f_1(cj,4)
      

  4.   

    郁闷~~~~
    To:pbsql(风云) 
    能给个注释么?我看的有点难度啊,charindex和stuff函数是做什么用的?谢谢
      

  5.   

    charindex返回函数是出字符窜里里出现的你先的字符的第一个位置
    例如 select charindex('A','BBBACBXA')
    它返回的数是4,是说A字符在'BBBACBXA'字符窜里的第一次出现在第4个字符上,
    charindex 还有一个参数 例如select charindex('A','BBBACBXA',5)
    返回值是8 ,是A字符在在'BBBACBXA'字符窜里从第5位开始搜索的第一个A出现在第8个字符上stuff 是用字符替换原字符窜函数
    例如 select stuff('abcde',1,2,'kkkkk')
    结果是kkkkkcde 是从字符窜'abcde'里的第一个字符取掉2个字符替换成红面的字符'kkkkk'
    明白了!:)