오라클 LIKE IN 다중 조건 검색


SOME_TABLE이라는 테이블의 TEXTS라는 컬럼에 S와 T로 시작하는 조건의 ROW를 출력하고 싶은데 어떻게 해야할까


오라클에서 아래 쿼리 같이 LIKE IN이 먹히지 않는다.


예시쿼리 (사용 불가능)


SELECT * 

FROM SOME_TABLE

WHERE TEXTS LIKE IN ('S%', 'T%')

해결 방법


정규식 (REGEXP_LIKE)로 검색
오라클 10g 버전 이상부터 사용 가능함.
원형 : REGEXP_LIKE(STRING, PATTERN)


 


| (파이프)문자로 구분자를 지어준다.


SELECT * 

FROM SOME_TABLE

WHERE REGEXP_LIKE(TEXTS, 'S|T')

정규식을 사용한다.


SELECT *

FROM SOME_TABLE

WHERE REGEXP_LIKE(TEXTS, '^[ST]')

 


중간부터 다른 글자 검색은 어떻게 할까


SELECT *

FROM SOME_TABLE

WHERE REGEXP_LIKE(TEXTS, '^KKK[QW]')

우리가 알고있는 정규식을 사용하면 된다.
위 쿼리 검색결과는 TEXTS 라는 컬럼의 KKKQ.. 로 시작하거나 KKKW..로 시작하는 ROW를 가져온다.

 

WHERE REGEXP_LIKE(name, '홍|김|서')

WHERE (name LIKE '%홍%' OR name LIKE '%김%' OR name LIKE '%서%')

+ Recent posts