有如下字符串
abc|def|ghi|
123|456|789|我想通过|拆分保存表有三个字段的表中,请问大家有什么好办法?
如下:
字段1   字段2   字段3
abc     def      ghi
123    456     789

解决方案 »

  1.   

    with tt as(select 'abc|def|ghi' a from dual
      union all select '123|456|789' from dual)
     
    select substr('|'||a,2,instr(a||'|','|')-1),
      substr('|'||a,instr(a||'|','|')+2,instr(a||'|','|',1,2)-instr(a||'|','|')-1),
      substr('|'||a,instr(a||'|','|',1,2)+2,instr(a||'|','|',1,3)-instr(a||'|','|',1,2)-1)
    from tt10g以上可以试试
    with tt as(select 'abc|def|ghi' a from dual
      union all select '123|456|789' from dual)
     
    select regexp_replace(a,'(\w+)\|(\w+)\|(\w+)','\1'),
      regexp_replace(a,'(\w+)\|(\w+)\|(\w+)','\2'),
      regexp_replace(a,'(\w+)\|(\w+)\|(\w+)','\3') from tt
      

  2.   

    instr()
    substr()
    你要用到这两个函数
      

  3.   

    with tt as(select 'abc|def|ghi' a from dual 
      union all select '123|456|789' from dual) select regexp_replace(a,'(\w+)\|(\w+)\|(\w+)','\1'), 
      regexp_replace(a,'(\w+)\|(\w+)\|(\w+)','\2'), 
      regexp_replace(a,'(\w+)\|(\w+)\|(\w+)','\3') from tt
      

  4.   

    oracle的函数还是很强大的,呵呵!学习!