使用REGEXP_SUBSTR从字符串中提取属性值

时间:2017-01-17 22:09:08

标签: string oracle substr regexp-substr

假设我有以下字符串:a=A#abc=Y#sps=Y# 在表的某些领域。 我想使用此查询查询a并获取A

select UPPER(REGEXP_SUBSTR(REGEXP_SUBSTR(
    'a=Y#abc=Y#sps=Y#' , 
    'a\=([^#]+)#?'), '[[:alpha:]]')) from dual;

我明白了:

a
---------------
N
1 row selected

1 个答案:

答案 0 :(得分:0)

您可能需要一个REGEXP_SUBSTR:

SQL> select regexp_substr(s,'(nonExcludableInd=)([^#]*)', 1, 1, '', 2)
  2  from (
  3          select 'nonExcludableInd=ABCD#includePrstInd=Y#cpeInd=Y#' as s from dual
  4       );

REGE
----
ABCD

没有正则表达式的解决方案可能是:

select substr(s, startPosition, instr(s, '#', startPosition ) - startPosition)
from ( 
       select instr(s,'nonExcludableInd=')+17 as startPosition, s
       from (
                select 'nonExcludableInd=A#includePrstInd=Y#cpeInd=Y#' as s from dual
             )
     )