oracle 截取字符串中的特定部分substr,instr

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 '%标志建筑=%'

猜你喜欢

转载自zhoujingxian.iteye.com/blog/2283046