노트1/SQL
[MySQL] 프로그래머스 문제풀이 : LIKE와 IN, 와일드카드%
Paige09
2021. 12. 13. 17:27
프로그래머스 > 코딩테스트 연습 > SQL 고득점 Kit
https://programmers.co.kr/learn/challenges
https://programmers.co.kr/learn/courses/30/lessons/59045
https://programmers.co.kr/learn/courses/30/lessons/59409
[보호소에서 중성화한 동물]
SELECT i.animal_id, i.animal_type, i.name
FROM animal_ins i INNER JOIN animal_outs o ON i.animal_id = o.animal_id
WHERE i.sex_upon_intake LIKE '%Intact%'
-- 또는 i.sex_upon_intake IN ('Intact Male','Intact Female')
AND (o.sex_upon_outcome LIKE '%Spayed%'
OR o.sex_upon_outcome LIKE '%Neutered%')
-- 또는 AND o.sex_upon_outcome NOT LIKE '%Intact%'
ORDER BY i.animal_id
[중성화 여부 파악하기]
처음 작성한 코드
SELECT animal_id, name,
CASE WHEN SEX_UPON_INTAKE LIKE ('%Neutered%' OR '%Spayed%') THEN 'O'
ELSE 'X'
END as 중성화
FROM animal_ins
ORDER BY animal_id
LIKE 를 사용해 여러 검색 조건을 주려면, 아래와 같이 사용해야 함.
LIKE 절에는 필드값을 하나씩만!
WHEN SEX_UPON_INTAKE LIKE '%Neutered%'
OR
WHEN SEX_UPON_INTAKE LIKE '%Spayed%'
수정한 답안.
SELECT animal_id, name,
CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%'
OR SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
ELSE 'X'
END as 중성화
FROM animal_ins
ORDER BY animal_id
(+)
SEX_UPON_INTAKE IN ('%Neutered%', '%Spayed%')
IN과 와일드카드% 조합은 작동하지 않음.