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 문이다. 정규식 패턴으로 LIK 연산을 처리하는 것이다.
REGEXP_LIKE 연산자
SELECT NAME
FROM USERS
WHERE REGEXP_LIKE(NAME, 'kim%|lee%|park%');
결과값: kimchanbin, leechanbin, parkchanbin
참조
728x90
'SQL' 카테고리의 다른 글
MySQL - Incorrect coloumn specifier for column 에러 원인과 해결방법 (2) | 2023.11.01 |
---|---|
MariaDB - 행 번호 출력하기 ROW_NUMBER() OVER PARTITION BY (3) | 2023.09.11 |
Oracle - 줄바꿈(개행) 제거 (2) | 2023.08.16 |
DB - DB View에 대해서 알아보자 (0) | 2023.08.10 |
Oracle - LISTAGG (여러 컬럼을 하나의 컬럼으로 가져오기) (0) | 2023.07.24 |