Oracle REGEXP_SUBSTR |获取两个分隔符之间的字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle REGEXP_SUBSTR |获取两个分隔符之间的字符串相关的知识,希望对你有一定的参考价值。
我有一个字符串Organization, INC..Truck/Equipment Failure |C
。我想在组织名称之后(在两个'..'字符之后)和管道字符之前获取子字符串。所以输出字符串应该是 - Truck/Equipment Failure
。你能帮忙吗?
我一直在尝试像这样形成正则表达式,但似乎没有工作。
select regexp_substr('Organization, INC..Truck/Equipment Failure |C', '[^.]+',1,2) from dual;
答案
你可以用它。
SELECT REGEXP_SUBSTR ('Organization, INC..Truck/Equipment Failure |C',
'([^.]+)\|',
1,
1,
NULL,
1)
FROM DUAL;
编辑:这将恰好匹配两个点,后跟一个或多个字符,而不是|
直到字符串的结尾。
SELECT REGEXP_SUBSTR ('Organization, INC..Truck/Equipment Failure',
'\.{2}([^|]+)',
1,
1,
NULL,
1)
FROM DUAL;
另一答案
经典SUBSTR + INSTR选项:
SQL> with test as (select 'Organization, INC..Truck/Equipment Failure |C' col from dual)
2 select substr(col, instr(col, '..') + 2,
3 instr(col, '|') - instr(col, '..') - 2
4 ) result
5 from test;
RESULT
------------------------
Truck/Equipment Failure
SQL>
以上是关于Oracle REGEXP_SUBSTR |获取两个分隔符之间的字符串的主要内容,如果未能解决你的问题,请参考以下文章
在 Oracle 中使用 REGEXP_SUBSTR 作为拆分
Oracle SQL 正则表达式 RegExp_SubStr End Of Line (chr(10) 在搜索文本中返回 null