LIKE 문을 다중으로 사용하고싶은경우 ( 마치 IN절안에 LIKE문을 여러개 쓰는거처럼)
WHERE 조건에 LIKE 를 OR로 걸어도 되지만
REGEXP_LIKE 을 사용 하면 된다.
일반적으로 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')
위와 같은 쿼리를 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로 시작하는 나라이름을 조회 할 수 있다.
'DB\SQL' 카테고리의 다른 글
[Oracle] 오라클 올림,내림,반올림,버림 함수 (0) | 2019.11.20 |
---|---|
[Oracle] 오라클 최대,최소 값 구하기(GREATEST,LEAST) (0) | 2019.11.13 |
[Oracle] 오라클 처음,마지막 조회값만 구하기 (0) | 2019.11.04 |
[Oracle] dual 다중조회 (connect by level) (0) | 2019.10.19 |
[Oracle] 오라클18 계정 생성하기 (0) | 2019.10.18 |