문제
동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요.
이때 결과는 아이디 순으로 조회해주세요.
💡 조건
sql 코드
SELECT animal_id, name, sex_upon_intake
FROM animal_ins
where name in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY animal_id
where name in ('Lucy', 'Ella', 'Pickle',
'Rogan', 'Sabrina', 'Mitty')
SELECT animal_id, name, sex_upon_intake
ORDER BY animal_id
처음에는 단순히 like를 사용했으나 그렇게 사용하면 like ' ' and like ' ' and... 이런식으로 식이 엄청 길어졌다. 그리고 or을 사용하여 작성도 해봤으나 그것도 정답으로 연결되지 않았다. 검색해보니 프로그래머스의 질의응답을 발견했다.
regexp는 못쓰나요?
해당 글을 통해서 세부적인 내용을 배울 수 있었다.
정규식을 사용할 수도 있는 문제인데, 해당 이름과 완전히 같은걸 추출해야하므로 기호들을 작성해주어야한다.
밑에는 긁어온 것 ~~~
REGEXP를 사용하는 경우
WHERE A.NAME REGEXP '^(Lucy|Ella|Pickle|Rogan|Sabrina|Mitty)$'
와 같이 정규식의 문자열이 단순 매칭을 OR로 연결하는 것에서 추가로 시작과 끝을 ^과 $ 로 제한을 두셔야 합니다.
예를 들면 ^과 $을 정규식에 포함하지 않았을 경우
xxxLucyxx, Lucyxxxx, xxxxLucy
등의 이름도 정규식이 match TRUE 결과를 반환할 것이기 때문입니다.
시작 끝 조건을 포함한 정규식을 작성하신다면 REGEXP 로 SQL 문법을 작성하셔도 프로그래머스에서 통과될 거에요 :-)