[프로그래머스 | LEVEL2 | SQL] NULL 처리하기

BIN·2024년 3월 30일

프로그래머스

목록 보기
3/24

🔎 문제


❗️주의사항

  • NAME칼럼의 NULL값만 찾아 No name으로 변경

⭕️ 풀이

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

CASE 컬럼명 WHEN 조건식 THEN 결과 ~~~ END의 방법을 이용해서 칼럼에 조건을 추가해주었다. NAME칼럼이 NULL인 경우 NULL대신 No name을 표기하였다.
그 이외의 경우는 그대로 NAME칼럼으로 출력하고 END로 조건식을 마무리 하였다.

📌 KEYPOINT

조금더 간단한 방법이 있을까 싶어서 찾아보니 IFNULL함수를 이용하면 되더라...
IFNULL(칼럼명, "NULL"일 경우 대체 값)의 형태로 사용됨

--MySQL
SELECT 
	ANIMAL_TYPE, 
    IFNULL(NAME, 'No name') AS NAME, 
    SEX_UPON_INTAKE
FROM ANIMAL_INS;

Oracle에서는 사용하는 함수가 조금 다른듯 하다.
NVL("값", "지정값") : 값이 NULL인 경우 지정값을 출력하고, NULL이 아니면 원래 값을 그대로 출력
NVL2("값", "지정값1", "지정값2") : 값이 NULL이 아닌 경우 지정값1을 출력하고, NULL인 경우 지정값2를 출력

--Oracle(NVL)
SELECT 
	ANIMAL_TYPE, 
    NVL(NAME,'No name') AS NAME, 
    SEX_UPON_INTAKE
FROM ANIMAL_INS;
--Oracle(NVL2)
SELECT 
	ANIMAL_TYPE, 
    NVL2(NAME,NAME,'No name') AS NAME, 
    SEX_UPON_INTAKE
FROM ANIMAL_INS;

더 다양한 방법이 존재하는 것 같으나 이정도만 알면 NULL을 처리하는데에 문제는 없을 것 같다(사실 니가 공부하기 귀찮은게 아닐까?)

💗 느낀점

사실 농담이고 더 많은 내용을 알아두면 좋겠지만, 검색을 해봐도 이 정도를 많이 사용하는 것 같다.
문제 보자마자 CASE문만 생각났는데 다양한 풀이를 익혀놓으면 나중에 언젠가 도움이 되겠지...
손에 익으면 다른 풀이도 찾아봐야겠다

profile
A new developer...Bin

0개의 댓글