상세 컨텐츠

본문 제목

MySQL에서 특정 문자가 제외된 쿼리하기 (NOT LIKE, LIKE IN)

🗳️ Data

by chnh 2023. 1. 29. 21:58

본문

반응형

들어가며

BI를 구성하다 보면 특정 문자를 제외하는 동시에 특정 문자를 포함해야 하는 경우가 종종 있다.
예를 들면 다음 문제같은 상황이다.

 

보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 아이디 순으로 조회하는 SQL 문을 작성해주세요. 출처: 프로그래머스 코딩 테스트 연습

 

같은 맥락으로 column_a에 'facebook'과 'google'이 포함되어 있지만 column_b의 값에 'rau', 'reattribution', 'return'과 같은 문자들이 포함되지 않은 데이터를 쿼리하고 싶다!

이런 경우에도 LIKE를 사용할 수 있다.

SELECT column(s) 
FROM table_a
WHERE column_a_name LIKE IN ('%facebook%','%google%')
  AND column_b_name NOT LIKE '%rau%'
  AND column_b_name NOT LIKE '%reattribution%'
  AND column_b_name NOT LIKE '%return%'

LIKE

LIKEWHERE 절에서 특정 컬럼에서 지정된 패턴을 검색하는 데 사용한다.

SELECT column1, column2, ...
FROM table_name
WHERE column LIKE pattern

and, or로 여러 조건을 나열 할 수 있고, '%' 나 '_'과 같은 와일드카드를 사용해서 표현할 수 있습니다.

IN

INWHERE 절에서 여러 값을 지정할 때 사용한다. (OR 조건)

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...)

그래서 결론은

SELECT column_name(s)
FROM table_name
WHERE column_a_name LIKE IN (value1, value2, ...)
    AND column_b_name NOT LIKE pattern1
    AND column_b_name NOT LIKE pattern2
    AND column_b_name NOT LIKE pattern3

당연한 이야기지만 LIKE+IN 은 가능하지만
NOT LIKE+IN불가능하다.
NOT LIKE를 사용할 때는 AND 조건으로 명시해야한다.

끝 !

반응형

'🗳️ Data' 카테고리의 다른 글

MySQL 시간 및 날짜 더하기 빼기 (DATE_ADD, DATE_SUB)  (0) 2023.01.29

관련글 더보기

댓글 영역