2017-01-17 2 views
-1

Предположим, у меня есть следующая строка: в некоторой области таблицы. Я хочу запросить для a и получить A с этим запросом:Значение атрибута извлечения формирует строку, используя REGEXP_SUBSTR

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

я получаю:

a 
--------------- 
N 
1 row selected 
+0

Добро пожаловать в Stackoverflow! Чтобы получить максимальную отдачу от сайта, важно задавать хорошие вопросы. Руководство по заданию вопросов находится по адресу: http://stackoverflow.com/help/how-to-ask –

ответ

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 
      ) 
    ) 
+0

Спасибо. Это сработало, но предположим, что у меня есть несколько символов вместо «А», и тогда мне нужно извлечь все? – Mishti

+0

Это работает для генерических строк, а не только для «A». – Aleksej

+0

тот, у кого нет регулярных выражений, работает для всех, кроме одного с regexp_substr, только извлекает 'A'. Мне нужно решение для regexp_substr. – Mishti

Смежные вопросы