# ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/132201
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
# ๋ฌธ์ ์์ฝ
PATIENT ํ ์ด๋ธ์์ 12์ธ ์ดํ์ธ ์ฌ์ํ์์ ํ์์ด๋ฆ, ํ์๋ฒํธ, ์ฑ๋ณ์ฝ๋, ๋์ด, ์ ํ๋ฒํธ๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ์ ํ๋ฒํธ๊ฐ ์๋ ๊ฒฝ์ฐ, 'NONE'์ผ๋ก ์ถ๋ ฅ์์ผ ์ฃผ์๊ณ ๊ฒฐ๊ณผ๋ ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ณ , ๋์ด ๊ฐ๋ค๋ฉด ํ์์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
# ํต์ฌ ๊ฐ๋
null๊ฐ์ผ๋ ๋ฐ๊พธ๊ณ ์ถ์ ๊ฐ์ ๋ํ๋ด๋ ํจ์
1) ifnull
ifnull(์ปฌ๋ผ, null์ผ๋ ๋ฐ๊พธ๊ณ ์ถ์ ๊ฐ)
select pt_name,
pt_no,
gend_cd,
age,
ifnull(tlno, 'NONE') tlno
from patient
where age <= 12 and gend_cd = 'W'
order by age desc, pt_name
2) coalesce
coalesce(์ปฌ๋ผ, null์ผ๋ ๋ฐ๊พธ๊ณ ์ถ์ ๊ฐ)
select pt_name,
pt_no,
gend_cd,
age,
coalesce(tlno, 'NONE') tlno
from patient
where age <= 12 and gend_cd = 'W'
order by age desc, pt_name
Q) ๊ทธ๋ ๋ค๋ฉด ๋ง์ฝ case when then ๋ฌธ์ ์ฌ์ฉํ๋ค๋ฉด?
๋ค์ ๋ ๊ตฌ๋ฌธ์ค ํ๋๋ ์ ๋ต, ํ๋๋ ์ค๋ต์ด๋ค!
< ์ค๋ต >
select pt_name,
pt_no,
gend_cd,
age,
case when tlno is null then 'NONE'
end tlno
from patient
where age <= 12 and gend_cd = 'W'
order by age desc, pt_name
์ด ๊ตฌ๋ฌธ์์๋ ์ค๋ต์ด ๋ฐ์ํ๋ค
else์ ์ ์๋ตํ์๊ธฐ ๋๋ฌธ์ ํด๋น ์กฐ๊ฑด์ ๋ง์ง ์๋ ๋๋จธ์ง ๊ฒฝ์ฐ์๋ NULL์ ๋ฐํํ๊ฒ ๋๋ค
๋ค์์ ์ค์ ์คํ ๊ฒฐ๊ณผ์ด๋ค
< ์ ๋ต >
select pt_name,
pt_no,
gend_cd,
age,
case when tlno is null then 'NONE'
else tlno end tlno
from patient
where age <= 12 and gend_cd = 'W'
order by age desc, pt_name