sql

[SAP HANA] SUBSTR_REGEXPR/[ORACLE]REGEXP_SUBSTR

다있는닉네임 2023. 3. 7. 15:01

정규식을 이용해서 문자열을 잘라서 사용하는 함수

 

https://help.sap.com/docs/HANA_SERVICE_CF/7c78579ce9b14a669c1f3295b0d8ca16/a2f80e8ac8904c13959c69bfc3058f19.html?locale=en-US 

 

SAP Help Portal

 

help.sap.com

공식 홈페이지에서의 설명이다.
공홈에서는 아래와 같은 형식을 따른다고 한다.
SUBSTR[ING]_REGEXPR( <pattern> [ FLAG <flag> ] IN <regex_subject_string> 
 [ FROM <start_position> ] 
 [ OCCURRENCE <regex_occurrence> ] 
 [ GROUP <regex_capture_group> ] )
  • source_string: 부분 문자열을 추출할 대상 문자열
  • regex_pattern: 부분 문자열을 추출하기 위한 정규표현식 패턴
  • start_position (선택 사항): 추출을 시작할 위치를 지정하는 정수값 기본값은 1
  • occurrence (선택 사항): 추출할 부분 문자열이 발생하는 위치를 지정하는 정수값. 기본값은 1
잘라볼 데이터 예시를 들어보자
food라는 컬럼안에 값이 "coffe1sandwich2" 라는 데이터가 있다고 가정을 해보자.

SUBSTR_REGEXPR('정규식' IN 컬럼명 OCCURRENCE  추출할 부분 문자열이 발생하는 위치)

저기서 숫자 1,2만 가져오고 싶을 경우에는 어떻게 하면 좋을까?
SUBSTR_REGEXPR 사용할 경우
SUBSTR_REGEXPR ('[0-9]*' in 컬럼명 occurrence 1)

SUBSTR_REGEXPR ('[0-9]*' in 컬럼명 occurrence 3)

숫자만 가져오는 정규식 사용, 데이터를 가져오는 컬럼명 그리고 그 기준으로 잘랐을 때 처음의 경우는 1, 두번째의 경우는 2가 반환이 될 것이다.

정규식은 추후에 정리해볼 생각

REGEXP_SUBSTR 사용할 경우

REGEXP_SUBSTR(컬럼명, 정규식, 추출시작 위치, 추출할 부분 문자열이 발생하는 위치)

HANA와 커다란 차이는 없지만 함수명이 조금 다르다.