정규식을 이용하여 중첩된 괄호에 안에 쌍으로 구분된 괄호가 여러개 존재하는데, 그 안에 특정 값이 포함된 부분을 찾고 싶습니다. 예로 아래와 같은 쿼리에서 'A'가 포함된 괄호안의 값을 하나의 정규식으로 찾고 싶습니다 미리 감사드립니다. SELECT STR , REGEXP_SUBSTR(STR, '\([^()]*\)', 1, 1) AS T1 , REGEXP_SUBSTR(STR, '\([^()]*\)', 1, 2) AS T2 , REGEXP_SUBSTR(STR, '\([^()]*\)', 1, 3) AS T3 FROM ( SELECT '1 ( (A), ( (A, B), D, (E, F)) ) 2' AS STR FROM DUAL )
---------------------- [결과]
STR | T1 | T2 | T3 |
-----------------------------------+-----+--------+--------+
1 ( (A), ( (A, B), D, (E, F)) ) 2 | (A) | (A, B) | (E, F) |
재가 정확하게.기술하지 않았네요
괄호안에 값을 추출하는데
그 안에 괄호 포함되어있는 데이터는 제외하며, A 라는 문자가 포함 된 값을 추출하려 합니다.
WITH TBL AS ( SELECT '1 ( (A), ( (A, B), D, (E, F)) ) 2' AS STR FROM DUAL ) SELECT REGEXP_SUBSTR(STR, '\([^()]*\)', 1, LEVEL) AS COL FROM TBL CONNECT BY LEVEL <= 5; 결과 (A) (A, B) (E, F) null null 이렇게 나오는데 REGEXP_SUBSTR(STR, '\([^()]*\)', 1, LEVEL) 위의 이 정규식을 수정하여 A 라는 문자는 포함 된 결과만 도출하려 합니다.
조건에 만족하지 않는 건 null 로 나오게 하려 합니다.