본문 바로가기
DB/ORACLE,HANA

S/4HANA - 특정 구분자로 이루어진 문자열 부분 추출 - SUBSTRING_REGEXPR / REGEXP_SUBSTR

by ESTP 개발자 2025. 2. 6.

'AAAA/BBBB/CCCC/DDDD/EEEE'  에서 CCCC만 갖다 쓰고 싶은 경우

 

📌 SUBSTRING_REGEXPR 사용 (S/4HANA 표준 함수)

SELECT SUBSTRING_REGEXPR('(?<=/)[^/]+(?=/)' IN 'AAAA/BBBB/CCCC/DDDD/EEEE' OCCURRENCE 2) AS extracted_value 
  FROM DUMMY;

🔹 해석

  • (?<=/) → 앞에 /가 있는 경우 찾음.
  • [^/] → /가 아닌 문자들을 매칭.
  • (?=/) → 뒤에 /가 있는 경우 찾음.
  • OCCURRENCE 2 → 두 번째 슬래시(/) 사이의 값을 추출.

 

📌 REGEXP_SUBSTR 사용 (대안)

 
SELECT REGEXP_SUBSTR('AAAA/BBBB/CCCC/DDDD/EEEE', '[^/]+', 1, 3) AS extracted_value 
  FROM DUMMY;

🔹 해석

  • '[^/]+' → /을 제외한 문자열을 찾음.
  • 1, 3 → 세 번째 구분자 사이 값을 가져옴 (CCCC).

 

 

📌 테이블에서 적용하는 경우

SELECT SUBSTRING_REGEXPR('(?<=/)[^/]+(?=/)' IN column_name OCCURRENCE 2) AS extracted_value
  FROM table_name;

또는

SELECT REGEXP_SUBSTR(column_name, '[^/]+', 1, 3) AS extracted_value 
  FROM table_name;
 

 

 

 

 

위 방식으로 CCCC 부분만 추출할 수 있음! 🚀