프로그래머스_SQL_오답노트_NVL, IFNULL, CASE WHEN 구문 변경

HEE·2025년 3월 11일
0

프로그래머스 SQL

목록 보기
2/13
post-thumbnail

프로그래머스 SQL 고득점 KIT 내 IS NULL 문제

Level 2. NULL 처리하기.

동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.

오라클 답안과 MY SQL답안 및 공통 답안으로 작성함.
구문 변경을 할 수 있는지 꼭 체크하기!

[오라클] 정답 확인

SELECT ANIMAL_TYPE,
       NVL(NAME,'No name') AS NAME, 
       SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

[MY SQL] 정답 확인

SELECT ANIMAL_TYPE,
       IFNULL(NAME,'No name') AS NAME, 
       SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

NVL은 오라클에서만 사용하는 함수!
MY SQL에서는 NVL 대신 IFNULL 을 사용!
NVL 자리에 IFNULL 그대로 써줌.

[모두 사용 가능] CASE WHEN 정답 확인

SELECT ANIMAL_TYPE,
       CASE WHEN NAME IS NULL THEN 'No name' 
            ELSE NAME 
            END AS NAME, 
       SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

MY SQL과 오라클 모두 문제 없이 사용하려면 [CASE 구문]을 사용해야한다.
NVL함수와 IFNULL 모두 CASE 구문으로 변경 가능하다.
그자리 그대로 풀어쓰듯이 CASE 구문을 써주면 된다.

어려웠던 부분

  • NVL IFNULL 함수를 CASE 구문으로 변경하기
    (유선배 파랭이 p102)

NVL함수는 오직 오라클에서만 사용 가능.
IFNULL함수 또한 오직 MY SQL에서만 사용 가능.
상관 없이 사용할 수 있는 함수는 CASE 구문 뿐이며,
구문 변경을 할 줄 알아야하는게 POINT!

  • CASE 구문
  1. 구문 구조 확인
CASE  WHEN     THEN
      WHEN     THEN
      WHEN     THEN
      ELSE 
      END코드를 입력하세요
  1. ~이면, ~이고, ~이면 ~이다.
  2. CASE문에서는 ELSE 뒤의 값이 DEFAULT 값이 되고,
    별도의 ELSE가 없을 경우 NULL 값이 DEFAULT 값이 된다.
profile
ALL IS WELL

0개의 댓글