甲骨文 REGEXP_SUBSTR |获取两个分隔符之间的字符串
Oracle REGEXP_SUBSTR | Fetch string between two delimiters
我有一个字符串 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>
我有一个字符串 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>