본문으로 바로가기

[Oracle] 오라클 다중 LIKE 문 (REGEXP_LIKE)

category DB\SQL 2019. 11. 11. 21:25

LIKE 문을 다중으로 사용하고싶은경우 ( 마치 IN절안에 LIKE문을 여러개 쓰는거처럼)

 

WHERE 조건에 LIKE 를 OR로 걸어도 되지만

 

REGEXP_LIKE 을 사용 하면 된다.

 

 

일반적으로 COUNTRIES 테이블안에 아래와 같은 데이터가 있을때

COUNTRIES 테이블의 데이터

나라 이름이 A와 B로 시작하는 데이터만 조회 하는 쿼리문을 작성해보자.

SELECT * FROM COUNTRIES WHERE (COUNTRY_NAME LIKE 'A%' OR COUNTRY_NAME LIKE 'B%')

조회결과

이러첨 OR을 이용하여 각각 LIKE 문을 써줄수 있지만 

 

오라클 10g이상부터 REGEXP_LIKE 를 사용하여 보다 간결하게 원하는 결과를 가져올 수 있다.

 

 

REGEXP_LIKE(컬럼명, 정규식)


SELECT * FROM COUNTRIES WHERE REGEXP_LIKE(COUNTRY_NAME, 'A|B')

C와 D가 속한 나라이름 조회

위와 같은 쿼리를 REGEXP_LIKE 를 이용하여 간단히 조회 할 수 있다.

 

파이프( | ) 를 이용하여 LIKE 를 걸 단어를 구분해 준다.

 

하지만 일반적으로 단어만 나열하면 LIKE %A% 와 같은 효과를 얻기 때문에, 정규식을 이용하여야한다.

 

SELECT * FROM COUNTRIES WHERE REGEXP_LIKE(COUNTRY_NAME, '^A|^B')
-- ^를 사용하여 시작하는 단어를 선정 할 수 있다.

SELECT * FROM COUNTRIES WHERE REGEXP_LIKE(COUNTRY_NAME, '^a|^b','i')
-- 세번째 인자로 i를 주어 대,소문자 구분을 하지않게 할 수 있다

A와 B로 시작하는 나라이름 조회

이처럼 정규식을 사용하여 A와 B로 시작하는 나라이름을 조회 할 수 있다.