表table1 有个school字段并有数据 如下:school
小学:嘉和苑小学、翠庭园实验小学    中学:54、48、7中学
小学:长江路小学   中学:50、48中学
.....
.....但现在要改为2个字段 gradeschool 和 middleschool, 并要将原来的数据按一定格式导入新的字段 如下:
gradeschool                    middleschool
嘉和苑小学,翠庭园实验小学      54,48,7
长江路小学                     50,48  
.....
.....顿号都改为英文逗号,并且middleschool字段没有中文.请教各位该如何做..谢谢

解决方案 »

  1.   

    字段名改英文没难度的
    update 语句:
    update table1 set gradeschool=substr(gradeschool,4,length(gradeschool)-3),middleschool=substr(replace(middleschool,'、',','),1,length(gradeschool)2)
      

  2.   

    刚刚没看到中学里有两个,做了下试验
     update temp set 
     gradeschool=replace(gradeschool,'小学:',''),
     middleschool=replace(replace(replace(middleschool,'、',','),'中学',''),':','')
    这里面就是要注意像、和:是中文标点还是英文标点,不搞清楚的话,会更新不成功的
      

  3.   

    之所以第二句把SUBSTR改成了REPLACE,是因为防止执行两次,这样会截掉前三个字符,所以这里全用的是替换语句
    我建了个TEMP表做的试验
      

  4.   

    刚刚发现楼主原来的是一个字段,现在要分拆到两个字段,我想了下,你这样做
    新的表建好两个字段,两个字段的内容都复制原表的字段,然后用下面的更新语句
    update temp set 
     gradeschool=substr(gradeschool,instr(gradeschool,'小学:',1,1)+3,instr(gradeschool,' ',1,1)-instr(gradeschool,'小学:',1,1)-3 ),
     middleschool=replace(substr(gradeschool,instr(gradeschool,'中学:',1,1)+3,instr(gradeschool,'中学',1,2)-instr(gradeschool,'中学:',1,1)-3 ),'、',',')这样就行了,不过有前提,小学截取的原理是从"小学:"到第一个空格为止,所以当小学字段里小学之间有空格就会把后面个小学截掉,所以小学之间不能出现空格
    中学的截取原理是从第一个“中学:”到第二个“中学”,所以如果在几个中学之间出现“中学”两个字,就会把后面的中学截掉