LV. 2 NULL ์ฒ๋ฆฌํ๊ธฐ ORACLE
ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ๋ณดํธ ์์์ผ, ๋ณดํธ ์์ ์ ์ํ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VARCHAR(N) FALSE ์ ์ ๊ฒ์ํ์ ๋๋ฌผ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ค ํฉ๋๋ค. ๋๋ฌผ์ ์๋ฌผ ์ข , ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ์์ด๋ ์์ผ๋ก ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ํ๋ก๊ทธ๋๋ฐ์ ๋ชจ๋ฅด๋ ์ฌ๋๋ค์ NULL์ด๋ผ๋ ๊ธฐํธ๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์, ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์ด๋ฆ์ "No name"์ผ๋ก ํ์ํด ์ฃผ์ธ์.
SELECT ANIMAL_TYPE, NVL(NAME, 'No name') as NAME ,SEX_UPON_INTAKE
FROM (SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID asc)
NULL๊ฐ์ด๋ฉด ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ๋ ํจ์ NVL
์นผ๋ผ๋ช
์์ ๊ฐ์ด NULL์ธ ๊ฒฝ์ฐ์ ๊ฐ์ ๋ฐํํด์ค๋ค.
NULL์ด ์๋๋ฉด ์นผ๋ผ์ ๊ฐ ๋ฐํ
-- oracle
NVL(์นผ๋ผ๋ช
, ๊ฐ)
-- sql server
ISNULL(์นผ๋ผ๋ช
, ๊ฐ)
๋์ผํ๊ฒ CASE๋ฌธ์ผ๋ก ์์ฑํ๋ฉด
CASE WHEN ์นผ๋ผ๋ช
IS NULL THEN ๊ฐ ELSE ์นผ๋ผ END ๋ฐ๊ฟ์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
COALESCE(์นผ๋ผ๋ช
, ๊ฐ1, ๊ฐ2, ...)
-- ์นผ๋ผ๋ช
์ ๊ฐ์ด NULL์ด๋ฉด ๊ฐ1์ ๊ฐ1๋ NULL์ด๋ฉด ๊ฐ2๋ฅผ ๋ฐํ, ๋ชจ๋ NULL์ด๋ฉด NULL ๋ฐํํ๋ค.
NULLIF(๊ฐ1, ๊ฐ2)
-- ๋๊ฐ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด NULL ๋ค๋ฅด๋ฉด ๊ฐ1 ๋ฐํ
NULLIF('test', 'test') -- NULL
NULLIF('test', 'sql') -- 'test'
์นผ๋ผ์ ๋ฃ์ด์ ๋น๊ตํ ์ ์๋ค. ์นผ๋ผ๋ช
๊ณผ ๊ฐ์ ์์ด์๋ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.