欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle 截取字符串中的特定部分substr,instr 博客分类: database oracle  

程序员文章站 2024-03-24 07:58:33
...

oplog是cbob类型,数据有可能是下面的:
------数据1-----
[基本警情框]
警情编号=20160---0017G0080
接警时间=2016-03-14 02:27:23
报警类型=110
联系电话=1897------01
身份及其它=男
值班长=黄平
原始警情性质=问电话
标志建筑=--省---镇;020乡道附近;中心洲、麻子坜、袁屋
[警情特征]
新添警情内容=来电人称:
新添处警情况=
[数字录音]
录音号=2016031401100019D 02:27:23
录音号=2016031401100019D 02:28:07

------数据2-----

[基本警情框]
警情编号=2016---40001H0020
接警时间=2016-03-14 00:01:12
报警类型=110
联系电话=1501---6228
身份及其它=男
值班长=
[警情特征]
新添警情内容=来电人称:
新添处警情况=

----------------
需要取数据中含有 标志建筑 的内容部分

select oplog from jqcase t WHERE T.JQTIME>='2016-03-14 00:00:00'  and oplog like '%标志建筑=%'

select jqno,jqtime,oplog,substr(oplog,(instr(oplog,'标志建筑=')),((instr(oplog,'[警情特征]')-(instr(oplog,'标志建筑='))))) from jqcase t
 WHERE T.JQTIME>='2016-03-14 00:00:00' --and oplog like '%标志建筑=%' and


select jqno,jqtime,oplog ,case when (instr(oplog,'标志建筑='))>0 then substr(oplog,(instr(oplog,'标志建筑=')),((instr(oplog,'[警情特征]')-(instr(oplog,'标志建筑='))))) else '' end
 from jqcase t
 WHERE T.JQTIME>='2016-03-14 00:00:00' --and oplog like '%标志建筑=%'

----------final SQL-----------
select jqno,jqtime,oplog ,case when (instr(oplog,'标志建筑='))>0 then substr(oplog,(instr(oplog,'标志建筑=')+5),((instr(oplog,'[警情特征]')-(instr(oplog,'标志建筑='))-5))) else '' end
 from jqcase t
 WHERE T.JQTIME>='2016-03-14 00:00:00' --and oplog like '%标志建筑=%'