본문 바로가기

데이터베이스/Oracle

Oracle 정규식 추출 REGEXP_LIKE 함수(문자열포함 검색)

REGEXP_LIKE함수는 간단하게 설명드리자면 저희는 특정 문자열 포함을 검색할 때 LIKE함수를 사용하는데 

시작 문자가 010,011,016인 문자열을 출력 할때 저희는 불편하게 or을 사용하여 나타내야 합니다. 

REGEXP_LIKE는 이 불편함을 해결해줄뿐만 로그인 아이디가 이메일 형식인지 비밀번호가 특수문자를 포함했는지 등 포맷 일치를 확인하고 싶을 때도 유용하게 쓰일 것 같습니다.  (설명이 부족한 거 같아 죄송합니다 꾸벅)

사용법도 역시 너무 간단합니다 ㅎㅎ 

 

REGEXP_LIKE( ) 함수

REGEXP_LIKE(컬럼, 조건);

ex1) 소문자를 포함하고있는 행 출력

SELECT * FROM TEST WHERE REGEXP_LIKE(PASSWORD, '[a-z]');

ex2) 소문자를 포함하고있지 않은 행 출력

SELECT * FROM TEST WHERE NOT REGEXP_LIKE(PASSWORD, '[a-z]');  //포함하고 있지 않는 행을 찾을 땐 

                                                                                                                   NOT 추가!!

ex3) 특수문자 !를 포함하고 있는 행 출력

SELECT * FROM TEST WHERE REGEXP_LIKE(PASSWORD, '\!');       //문자를 검색할 땐 탈출 문자 사용!!

ex4) 특수문자를 포함하고 있는 행 출력

SELECT * FROM TEST WHERE REGEXP_LIKE(PASSWORD, '[[:digit:]]');  

ex5) 시작문자가 010,011,016중 하나를 포함하고 있는 행 출력

SELECT * FROM TEST WHERE REGEXP_LIKE(phone_number, '^010|^011|^016');  //  ^는 시작 문자를 나타냄

ex6) 소문자 대문자 상관없이 시작문자가 5글자 이상이고 다음으로 @문자를 포함하고 있는 행 출력

SELECT * FROM TEST WHERE REGEXP_LIKE(email, '[a-zA-Z]{5}\@');

 

이것보다 더 다양하게 많이 쓰실 수 있습니다 ㅎㅎ