본문 바로가기
  • 실행력이 모든걸 결정한다
DB/SQL Problems

[SQL-String, Date, 난이도 중하] 중성화 여부 파악하기

by 김코더 김주역 2020. 12. 8.
반응형

 

해설 : 조건문과 LIKE문을 활용할 수 있는가 묻는 문제이다.

"ANIMAL_INS" 테이블에서 "ANIMAL_ID", "NAME", "SEX_UPON_INTAKE" 필드를 조회하면 되는데, "SEX_UPON_INTAKE" 필드 같은 경우에는 중성화된 동물은 'O', 그렇지 않은 동물은 'X' 로 표시하면 된다.

"SEX_UPON_INTAKE" 필드 값(문자열)이 "Neutered" 또는 "Spayed" 라는 단어로 시작한다면 중성화된 동물이라고 한다.

단어 포함 여부를 판단하기 위해 LIKE문을 쓰는 것이고, 이 여부를 판단하여 주어진 조건 별로 처리 하기 위해 조건문을 쓰는 것이다.

대표적인 조건문으로 IF, CASE가 있는데 이 2가지를 사용하는 방법을 각각 소개할 것이다. 

 

 

 

1) 조건문으로 IF를 사용

 

SELECT ANIMAL_ID, NAME,
    IF((SEX_UPON_INTAKE LIKE 'Neutered%') 
    	OR (SEX_UPON_INTAKE LIKE 'Spayed%'),"O","X") as 중성화
FROM ANIMAL_INS

 

IF(조건, TRUE일 경우 처리, FLASE일 경우 처리) 형태로 작성하면 된다. 조건 안에서 OR문을 사용하여 두 조건중 하나라면 TRUE로 처리('O' 표시)하게 하였다. 두 조건 다 맞지 않는다면 FALSE로 처리('X' 표시) 한다.

LIKE 'Neutered%' : "Neutered" 문자열로 시작하는 문자열인 경우

 

 

 

2) 조건문으로 THEN을 사용

 

SELECT ANIMAL_ID, NAME,
    CASE
        WHEN SEX_UPON_INTAKE LIKE 'Neutered%' THEN "O"
        WHEN SEX_UPON_INTAKE LIKE 'Spayed%' THEN "O"
        ELSE "X"
    END AS 중성화
FROM ANIMAL_INS;

 

또는

 

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;

 

WHEN 조건 THEN 처리 형태로 나열하여 작성하면 되고, 모든 조건에 맞지 않는 경우에는

ELSE 처리 형태로 작성하면 된다.

그리고 처음과 끝에는 각각 CASE와 END를 작성해준다.

반응형

댓글