[SQL] 루시와 엘라찾기 in programmers

Heejeong Choi·2021년 12월 14일
0

해당 문제 링크 : 코딩 테스트 연습 - 루시와 엘라찾기


ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

문제)

동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요.

작성한 답안)

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS 
WHERE REGEXP_LIKE(NAME, 'Lucy|Ella|Pickle|Rogan|Sabrina|Mitty') 
ORDER BY ANIMAL_ID
  1. 문제 파악
    -> 이번에는 ORDER BY까지 잘 작성했다고 생각했는데 계속 오답이 나왔다. 쉽게 접근했다고 생각했으나 어디가 틀렸는지 찾을 수 없어 검색을 할 수 밖에 없었다. 그에 따른 것은 REGEXP 사용시 문법에 오류가 있었다.
    정규식 사용시에는, 정규식을 '^(문자열1|문자열2|문자열3)$' 식으로 작성하여야 했다.
  2. 결과
    -> 문법에 대한 오류이기 때문에 이 부분은 작성을 하고 넘어가야 한다고 생각했다.
  3. 가능한 다른 답안
    -> WHERE 절에 IN()함수를 사용하여 굳이 정규식을 표현하지 않고도 조회가 가능하다.

최종 답안)

  1. IN() 함수를 사용한 답안
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS
WHERE NAME IN('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') 
ORDER BY ANIMAL_ID
  1. 정규식 문법 오류 수정 답안
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS 
WHERE REGEXP_LIKE(NAME, '^(Lucy|Ella|Pickle|Rogan|Sabrina|Mitty)$') 
ORDER BY ANIMAL_ID
profile
Welcome to my velog! I love learning something new to build up my ability in development field. I don't think it is shame not to know, but it is shame to pretend to know about something you don't know.

0개의 댓글