programing

Oracle SQL에서 정규식과 일치하는 문자열의 일부를 가져오는 방법

telecom 2023. 10. 7. 09:26
반응형

Oracle SQL에서 정규식과 일치하는 문자열의 일부를 가져오는 방법

테이블의 일부 필드에 'product=1627;color=45;size=7' 문자열이 있다고 가정해 보겠습니다.색상을 문의해서 45개를 받고 싶습니다.

다음 쿼리를 사용할 경우:

SELECT REGEXP_SUBSTR('product=1627;color=45;size=7', 'color\=([^;]+);?') "colorID" 
FROM DUAL;

이해합니다.

colorID  
---------
color=45;
1 row selected

.

이 예제에서 일치하는 문자열 45의 일부를 얻을 수 있습니까?

한 가지 방법은 REGEXP_REPLATE입니다.전체 문자열을 regex 패턴으로 정의한 다음 원하는 요소만 사용하면 됩니다.replace string. 이 예제에서 색상ID는 전체 문자열에서 세 번째 패턴입니다.

SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
                         , '(.*)(color\=)([^;]+);?(.*)'
                         , '\3') "colorID"  
FROM DUAL;  

덜 투박한 regex 솔루션이 있을 가능성이 있지만, 이 솔루션은 확실히 효과가 있습니다.여기 SQL Fiddle이 있습니다.

다음과 같은 것을 시도해 보십시오.

SELECT REGEXP_SUBSTR(REGEXP_SUBSTR('product=1627;color=45;size=7', 'color\=([^;]+);?'), '[[:digit:]]+') "colorID"
FROM DUAL;

Oracle 11g 이후부터는 REGEXP_SUBSTR에서 캡처 그룹을 지정할 수 있습니다.

SELECT REGEXP_SUBSTR('product=1627;color=45;size=7', 'color=(\d+);', 1, 1, 'i', 1) "colorID" 
FROM DUAL;

언급URL : https://stackoverflow.com/questions/13027309/how-to-get-part-of-the-string-that-matched-with-regular-expression-in-oracle-sql

반응형