본문 바로가기
SEO's Study/프로페셔널한 이야기

프로그래머스 코딩테스트 :: 이름이 없는 동물의 ID 구하기(MySQL)

by 신SEO세오 2020. 9. 19.
반응형

 

[접속 사이트] 프로그래머스 programmers.co.kr

[문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이다.

          보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL문을 작성하시오. 

          단, ID는 오름차순으로 정렬되어야 한다. 

 

 

[나의 풀이]

동물의 이름이 NULL 값이 있는 데이터를 조회하기 위해서 NAME IS NULL or ' ' 조건을 넣어줍니다.

NULLIF 함수를 사용해 NULLIF(NAME, ' ') IS NULL 조건으로 사용해도 무관한 것 같아요.

[참고]
NULLIF(NAME, ' ') IS NULL 
-> NAME 값이 ' '(공백)이면 NULL을 입력하고, 아니면 NAME의 값을 출력한다. 
즉, NULLIF(A, B) IS C 이라고 볼때, A=B이면 C를 입력하고 A!=B라면 A를 출력한다. 

IFNULL(NAME, NULL
SELECT ANIMAL_ID from ANIMAL_INS
WHERE NAME IS NULL or '' 
-- WHERE NULLIF(NAME, '') IS NULL
-- NULLIF 조건으로 적용해도 동일한 결과 노출
Order by ANIMAL_ID ASC



[실행 결과]

 

 

만약 이름이 있는 동물들의 ID가 필요하다면 NULLIF(NAME, ' ') IS NULL의 역 조건을 넣으면 되겠죠?

 

SELECT ANIMAL_ID from ANIMAL_INS
WHERE NAME IS NULL or '' 
-- WHERE NOT NULLIF(NAME, '') IS NULL
-- NULLIF 조건으로 적용해도 동일한 결과 노출
Order by ANIMAL_ID ASC

 

[이름 있는 동물 ID 쿼리 결과]

 

[프로그래머스 : NULL처리하기 나의 풀이]

마지막으로 빈 공백을 NULL로 치환하여 출력하기 위해서는 IFNULL을 사용합니다

[참고]
IFNULL(NAME, 'No Name') 
-> NAME 값이 ' '(공백) 또는 NULL이면 No Name을 입력하고, 아니면 NAME의 값을 출력한다. 
즉, IFNULL(A, B)  이라고 볼때, A=' ' 또는  A=NULL이면 B를 입력하고 A !=' ' 또는 A !='NULL'이면 A를 출력한다.  

 

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE 
from ANIMAL_INS 
Order by ANIMAL_ID

 

 

[NULL처리하기 실행 결과]

반응형

댓글