๐ญ ํ๋ก๊ทธ๋๋จธ์ค SQL ๋ฌธ์ : NULL ์ฒ๋ฆฌํ๊ธฐ
๋ด๊ฐ ์ฒ์ ์ฌ์ฉํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
SELECT ANIMAL_TYPE, NAME, SEX_UPON_INTAKE
FROM AINMAL_INS
WHERE NAME IS NULL;
NULL๊ฐ์ธ ํ์ ์ฐพ์์ ์ด๋ป๊ฒ ํ ๊ฑด๋ฐ?
์ฒ์ ์์ฑํ ์ฟผ๋ฆฌ๋ WHERE์ , ์กฐ๊ฑด์ผ๋ก NAME์ด NULL๊ฐ์ธ ๊ฒฝ์ฐ์ ํ์ ๋ํด์๋ง ์ถ๋ ฅ์ ํ๊ฒ ๋๋ค. NULL์ธ ๊ฐ์ ์ถ๋ ฅํ๋๊ฒ ์๋๋ผ NULL์ธ ๊ฐ์ ๋ฐ๊ฟ์ผ ํ๋๊ฑด๋ฐ ์ผ์ข ์ ํ์์กฐ์น(?), ๋ฌธ์ ์ ๋ชฉ์ฒ๋ผ NULL์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋๋ค.
IFNULL ์ฌ์ฉ
๋ต์ ๊ฐ๋จํ๋ค. ์์ฃผ ๊ธฐ์ด์ ์ธ...
'๋ง์ฝ์ ํด๋น ๊ฐ์ด NULL์ด๋ผ๋ฉด No name์ผ๋ก ๋ฐ๊ฟ์ค!' ๋ฅผ ์๊ฐํด๋ณด๋ฉด ๋๋ค.
SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
NULL์ ์ฒ๋ฆฌํ๋ ํจ์๋ IFNULL
, CASE
๊ฐ ์๋ค. ์์๋๋ก ์ดํด๋ณด์.
IFNULL
์ ๋ง์ฝ ๊ฐ์ด NULL์ด๋ผ๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ํจ์์ด๋ค. IFNULL์ฒ๋ผ
# IFNULL ์ฌ์ฉ ๋ฐฉ๋ฒ
SELECT IFNULL(Column๋ช
, "Null์ผ ๊ฒฝ์ฐ ๋์ฒด ๊ฐ") FROM ํ
์ด๋ธ๋ช
;
CASE
๋ ์กฐ๊ฑด์ ์ฌ์ฉํด TRUE, FALSE์ ๋ฐ๋ผ ๊ฐ์ ์ค์ ํด ์ค ์ ์๋ค.
# CASE ์ฌ์ฉ ๋ฐฉ๋ฒ
CASE
WHEN ์กฐ๊ฑด์1 THEN ์1
WHEN ์กฐ๊ฑด์2 THEN ์2
...
ELSE ์กฐ๊ฑด์ ๋ง๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์คํํ ์
END
๋ง์ฝ, CASE
๋ฅผ ์ฌ์ฉํด์ ์ ๋ต์ ํผ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค. ์ด๋ฒ ๋ฌธ์ ๋ ์กฐ๊ฑด์ด ์ฌ๋ฌ๊ฐ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ์ IFNULL
์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๊น๋ํด๋ณด์ธ๋ค.
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;