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
는 WHERE
절에서 특정 컬럼에서 지정된 패턴을 검색하는 데 사용한다.
SELECT column1, column2, ...
FROM table_name
WHERE column LIKE pattern
and, or로 여러 조건을 나열 할 수 있고, '%
' 나 '_
'과 같은 와일드카드를 사용해서 표현할 수 있습니다.
IN
은 WHERE
절에서 여러 값을 지정할 때 사용한다. (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
조건으로 명시해야한다.
끝 !
MySQL 시간 및 날짜 더하기 빼기 (DATE_ADD, DATE_SUB) (0) | 2023.01.29 |
---|
댓글 영역