[SQL] NULL ์ฒ˜๋ฆฌ : IFNULL, CASE

์œ ๊ฐ€์—ฐยท2022๋…„ 4์›” 2์ผ
0

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
2/2

๐Ÿ”ญ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 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์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜

NULL์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋Š” IFNULL, CASE๊ฐ€ ์žˆ๋‹ค. ์ˆœ์„œ๋Œ€๋กœ ์‚ดํŽด๋ณด์ž.

IFNULL

IFNULL์€ ๋งŒ์•ฝ ๊ฐ’์ด NULL์ด๋ผ๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. IFNULL์ฒ˜๋Ÿผ

# IFNULL ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

SELECT IFNULL(Column๋ช…, "Null์ผ ๊ฒฝ์šฐ ๋Œ€์ฒด ๊ฐ’") FROM ํ…Œ์ด๋ธ”๋ช…;   

CASE

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;
profile
์œ ๊ฐ€์—ฐ

0๊ฐœ์˜ ๋Œ“๊ธ€