[String, Date] 루시와 엘라 찾기

쥬쥬스·2023년 8월 21일
0

SQL

목록 보기
39/67
post-thumbnail

문제
동물 보호소에 들어온 동물 중 이름이 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
  1. 동물의 이름이 위와 같은 경우
    • name 칼럼에 해당 이름이 존재하는지를 in을 사용하여 분별
	where name in ('Lucy', 'Ella', 'Pickle', 
    	'Rogan', 'Sabrina', 'Mitty')
  1. 아이디, 이름, 성별 및 중성화 여부 조회
	SELECT animal_id, name, sex_upon_intake
  1. 아이디 순으로 조회
	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 문법을 작성하셔도 프로그래머스에서 통과될 거에요 :-)

profile
느려도... 꾸준히.....🐌

0개의 댓글