

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로 조건식을 마무리 하였다.
조금더 간단한 방법이 있을까 싶어서 찾아보니 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문만 생각났는데 다양한 풀이를 익혀놓으면 나중에 언젠가 도움이 되겠지...
손에 익으면 다른 풀이도 찾아봐야겠다