sql

[SAP HANA]LIKE_REGEXPR / [ORACLE]REGEXP_LIKE

다있는닉네임 2023. 3. 13. 12:23

둘 다 모두 정규식과 + like를 합친 함수이다. 이름만 다를 뿐 사용하고자 하는 것은 비슷하다.

즉, 정규식을 통해 정규식과 일치하는 경우를 반환해준다.

 

https://help.sap.com/docs/HANA_SERVICE_CF/7c78579ce9b14a669c1f3295b0d8ca16/b40d483dd34d47aa9cc89b4d8a6e617e.html

 

SAP Help Portal

 

help.sap.com

LIKE_REGEXPR에 대한 공식 문서이다.

 

SELECT * FROM  mytab  WHERE text  LIKE_REGEXPR ' them|this ';

 

위와 같이 사용된다. 저 괄호 안에 정규식 패턴을 넣는다면, 해당 정규식에 일치하는 값들이 나온다.

'|'(정규표현식에서 or를 의미함)를 같이 사용한다면, in과 같은 효과를 누릴 수 있다.

 

예시를 들자면, user라는 USERS 테이블에서 EMAIL 열이 유효한 이메일 주소인 행들을 검색하려면 아래와 같이 사용할 수 있다.

SELECT * FROM USERS WHERE EMAIL LIKE_REGEXPR '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'

 

 

오라클에서는 REGEXP_LIKE라고 사용을 하는데 위와 똑같고 함수만 다르다.

https://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm

 

REGEXP_LIKE

REGEXP_LIKE REGEXP_LIKE is similar to the LIKE condition, except REGEXP_LIKE performs regular expression matching instead of the simple pattern matching performed by LIKE. This condition evaluates strings using characters as defined by the input character

docs.oracle.com

SELECT * FROM  mytab  WHERE  REGEXP_LIKE(text,'them|this ');

 

만약 오라클에서도 sap hana와 같은 예시를 든다고 가정한다면 아래와 같이 사용할 수 있다.

SELECT * FROM CUSTOMERS WHERE REGEXP_LIKE(EMAIL, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$')