Oracle REGEXP_SUBSTR |获取两个分隔符之间的字符串

时间:2018-02-28 10:31:09

标签: sql 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;

2 个答案:

答案 0 :(得分:4)

你可以使用它。

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;

DEMO

答案 1 :(得分:1)

经典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>