繁体   English   中英

从值中提取特定的子字符串

[英]Extract a particular substring from value

特定查询的结果如下:

<?xml version="1.0" encoding="UTF-8"?>
<Attachment content-type="application/temp" name="123_PQ_ABCDEFG_160720190439.tmp"/>

我希望能够从name="123_PQ_ABCDEFG_160720190439.tmp"获得以12开头的3位数字[在这种情况下为123 ]

注意:所有3位数字均以“ 12”开头。 第三位数可以是任何数字[0-9]。

with test as (
    select '<?xml version="1.0" encoding="UTF-8"?><Attachment content-type="application/ms-excel" name="123_PQ_ABCDEFG_160720190439.tmp"/>' code from dual
)
select code,
CASE
WHEN REGEXP_LIKE(code, '^[12]')
THEN SUBSTR(code,1,3)
END AS code
from test

希望检查以12开头的字符串,然后获取仅3位数的子字符串。

预期结果:123实际结果:空

如果您不需要正则表达式,请尝试此

with test as (
    select '<?xml version="1.0" encoding="UTF-8"?><Attachment content-type="application/ms-excel" name="123_PQ_ABCDEFG_160720190439.tmp"/>' code from dual
)
select code,
 SUBSTR(code,instr(code,'name="')+6,3) code
from test

您可以尝试以下正则表达式:

with test as (
    select '<?xml version="1.0" encoding="UTF-8"?><Attachment content-type="application/ms-excel" name="123_PQ_ABCDEFG_160720190439.tmp"/>' code from dual
)
select 
 REGEXP_substr(REGEXP_substr(code, '[(name=")](1)(2)(\d)',1,1), '(1)(2)(\d)',1,1)
  AS code_substr,
 code
from test

db <> fiddle演示

干杯!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM