欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle提取字符串的有关问题

更新时间: 2014-01-05 02:11:05 责任编辑: Author_N1

 

Oracle提取字符串的问题。
有个需求,需要从一个表的一个字段中提取出需要的字段。比如
原表结构:--还有些字段。我这里就写2个就够了。
statis_date varchar2(8),
content varchar2(511)
..
..
------------------------------
其中content中的数据是这样的:
Main Product  MainProd_A  change to MainProd_B. MainProd_B effect at 20121213 142355. Appendant product list: &. Service list: &. The subscriber IMSI 605123456789  change to 805123456789 . Remaining Core Balance is 2000;

-----------------------------
我需要把红色部分分别提取出来插入到新表里面。目前我已经做了个样子,但还有更简单的办法么?求各位给个更简单的办法 ,不然数据多了。我怕性能问题。我的办法如下:
select t.statis_date,
       trim(substr(t.content, 13, instr(t.content, 'change to') - 13)) as oldproduct,
       trim(substr(t.content,
                   instr(t.content, 'to') + 2,
                   instr(t.content, '.') - instr(t.content, 'to') - 2)) as newproduct,
       trim(substr(t.content,
                   instr(t.content, 'at') + 2,
                   instr(t.content, '.', 1, 2) - instr(t.content, 'at') - 2)) as effecttime,
       trim(substr(t.content,
                   instr(t.content, 'IMSI') + 4,
                   instr(t.content, 'change to', 1, 2) - instr(t.content, 'IMSI') - 4)) as oldimsi,
       trim(substr(t.content,
                   instr(t.content, 'change to', 1, 2)+9,
                   instr(t.content, '.', -1, 1) - instr(t.content, 'change to', 1, 2)-9)) as newimsi,
                   trim(substr(t.content,
                   instr(t.content, 'Balance is') + 10,
                   instr(t.content, ';') - instr(t.content, 'Balance is') - 10)) as balance
  from tb_dw_interactlog_his_day t;
--参考方法--
with test as (
select 'Main Product  MainProd_A  change to MainProd_B. MainProd_B effect at 20121213 142355. Appendant product list: &. Service list: &. The subscriber IMSI 605123456789  change to 805123456789 . Remaining Core Balance is 2000;' as str from dual
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:11:05
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6683/
本文WWW.DOC100.NET DOC100.NET版权所有。