SQL

Oracle - 다중 Like (Like In)

Cold Bean 2023. 10. 24. 11:32
728x90

기존 서비스에서 검색 기능에 대한 요구사항이 있었다.
요구사항은 다음과 같다.

  • 복수 검색 가능
  • 검색 키워드를 포함하는 결과값 모두 조회
  • ex) kim, lee, park 검색 -> 결과값: kimchanbin, leechanbin, parkchanbin, kimleepark

 
만약 검색어와 일치하는 결과값만 가져오면 됐다면 IN 연산자를 사용했으면 됐을텐데, 검색어를 포함하는 모든 결과값을 가져와야 했기 때문에 LIKE문을 사용해야 했다.
 

IN 연산자

SELECT NAME
FROM USERS 
WHERE NAME IN ('kim', 'leechan', 'parkchanbin');
결과값: parkchanbin

 
 

LIKE 연산자

SELECT NAME
FROM USERS
WHERE NAME LIKE 'kim%'
결과값: kimchanbin

 
 
복수 검색이 가능해야 하기 때문에 다중 LIKE를 사용해야하는데 LIKE와 IN은 같이 사용할 수 없다.
다른 방법으로는 OR을 사용할 수 있지만 조금 더 스마트하게 처리하고 싶었다.
 
그렇게 찾은 것이 REGEXP_LIKE 문이다. 정규식 패턴으로 LIKE 연산을 처리하는 것이다.
 

REGEXP_LIKE 연산자

SELECT NAME
FROM USERS
WHERE REGEXP_LIKE(NAME, 'kim|lee|park');
결과값: kimchanbin, leechanbin, parkchanbin

 

참조

 

Oracle REGEXP_LIKE Examples - Upscale Analytics

Oracle 10g introduced support for regular expressions using different functions. This post focuses on the Oracle REGEXP_LIKE function, and explains how to use it.

ramkedem.com

 

728x90