Day 15
์ตํ ์ปดํจํฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ผ๋ ์กฐ๊ฑด๋ฌธ์ด๋ค
๊ธฐ๋ณธ์ ์ธ ํํ๋ ์ด๋ฌํ๋ค
CASE WHEN ์กฐ๊ฑด์1 THEN ์1
[WHEN ์กฐ๊ฑด์2 THEN ์2]
[ELSE ์3]
END
ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ํํ๋ก ๋ณํํ๋ ๊ฒฝ์ฐ๋ ์์ง๋ง ์ฌ๋ฌ๊ฐ์ง ์กฐ๊ฑด์ ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ํ๊ฒ ๋ณํํ ๋ ์ฌ์ฉํ๋ค
CASE ๋ฌธ
์ ๊ฐ๋ ์์ฒด๋ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ๊ฐ๋ ์ ์๋๋ค! ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ช ๋ น์ด์ ๊ตฌ์ฑ์ ํ๋ฒ ํ์ธํด๋ณด๊ธฐ ์ํด ๋ค์ ํ๋ฒ ํ์ ์์ฑํด๋ณด์
CASE WHEN ์กฐ๊ฑด์1 THEN ๊ฒฐ๊ณผ1
[WHEN ์กฐ๊ฑด์2 THEN ๊ฒฐ๊ณผ2]
...
[ELSE ๊ฒฐ๊ณผ3]
END
์ฐ์ , WHEN์ ์์๋ ์ฐธ๊ณผ ๊ฑฐ์ง์ ๋ฐํํ๋ ์กฐ๊ฑด์ ๊ธฐ์ ํ๊ณ ์กฐ๊ฑด์์ด ์ฐธ์ธ ๊ฒฝ์ฐ์ THEN์ ์ ์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํด์ค๋ค ๊ทธ๋ ๊ฒ WHEN์ ์ํ๋ ์กฐ๊ฑด๋ค์ ๊ณ์ํด์ ์จ์ ์กฐ๊ฑด๋ค์ ๊ฑฐ๋ฅด๊ณ ๊ฑฐ๋ฅธ ํ ์ด๋ ํ WHEN์ ์ํ์ง ์๋ ๊ฒฝ์ฐ์๋ ELSE๋ก ๋น ์ง๋๋ก ํ๋ค ํ์ง๋ง ๊ตณ์ด ํ์๊ฐ์ ์๋๋ฉฐ ๋น๊ฐ์ผ๋ก ๋๋ค๋ฉด 'ELSE NULL'๋ก ๊ฐ์ฃผ
ํ ๋ฒ ์ฌ์ฉํด๋ณด์ -> NULL๊ฐ์ 0์ผ๋ก ๋ฐํํด๋ณด์
์ด๋ ๊ฒ when์ ๋ด๋ถ์ a์ ๋ํด์ is null์ด๋ผ๋ ์กฐ๊ฑด์ ๋ฃ์ด์ฃผ๊ณ
when ์กฐ๊ฑด์ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ์ then์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ
์กฐ๊ฑด์ ๊ฑธ๋ฆฌ์ง ์์ ๊ฒ๋ค์ else๋ก ๋นผ๋๋ค
์ฌ์ค NULL๊ฐ์ ๋ฐํํ๋ ๊ฒฝ์ฐ์๋ COALESCE๋ผ๋ ํจ์๋ ์กด์ฌํ๋ค ์์์์ CASE๋ฌธ๊น์ง๋ ํ์์๊ณ ๋จ์ํ๊ฒ
SELECT a, COLESCE(a, 0) FROM sample37;
์ด๋ ๊ฒ๋ง ์์ฑํด์ค๋ ์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ฑ๋๋ค!!
๋ ํ๋์ CASE๋ฌธ
์ฌ์ค CASE๋ฌธ์ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋์ด์ง๊ฒ ๋๋ค ์ฒ์์ผ๋ก ์ธ๊ธํ CASE๋ฌธ์ ์ด๋ ํ ์กฐ๊ฑด์ ์ด๋ ํ ํ์๋ฅผ ํ๋ ๊ทธ๋ฐ ๊ฒ์ CASE๋ฌธ์ด๋ผ๊ณ ๋ณผ ์ ์๊ณ ์ฌ๊ธฐ์ ๋์ค๋ CASE๋ฌธ์ ๋จ์ CASE๋ฌธ์ด๋ค ๋จ์ CASE๋ฌธ์ CASE๋ค์ WHEN์ผ๋ก ์กฐ๊ฑด์ด ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ ๋ฐ๋ก CASE ๋ค์ ์์ ๊ธฐ์ ํ๊ณ WHEN ๋ค์ ๋น๊ตํ ์์ ๊ธฐ์ ํ๊ณ ๋ง์ง๋ง์ผ๋ก THEN ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ์์ฑ
CASE ์1
WHEN ์2 THEN ์3
[WHEN ์4 THEN ์5]
...
[ELSE ์6]
END
์ผ๋จ ์1์ ๊ธฐ์ค์ผ๋ก WHEN๋ค์ ์2์ ๋น๊ตํด์ ๊ฐ์ด ๊ฐ๋ค๋ฉด THEN๋ค์ ์3์ ๊ฒฐ๊ณผ๋ก ๋ด๋ฑ๊ณ ๊ทธ๋ ๊ฒ ์ญ ๊ฐ๊ณ ๊ฑธ๋ฆฌ๋๊ฒ ์๋ค๋ฉด ELSE๋ก ๋น ์ง๋ ๋ฐฉ์
์์๋ก ํ๋ฒ ๋ณด์ -> ์ฑ๋ณ์ ๋ฌธ์์ด๋ก ๋์ฝ๋ฉํ๋ ๊ณผ์ ์ด๊ฑด ๊ฒ์ CASE๋ฌธ์ผ๋ก ์์ฑ
์ด๊ฑด ๋จ์ CASE๋ฌธ์ผ๋ก ์์ฑ
CASE๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฃผ์์ฌํญ
CASE๋ฌธ์ ์ฅ์ ์ SELECT, WHERE, ORDER BY ์ด๋ ๊ฒ ๋ค์ํ ๊ณณ์์ ์ฌ์ฉํ ์ ์๋ ์ฅ์ ์ด ์๋ค ๊ทธ๋๋ ์ฃผ์ํ๊ณ ์ฌ์ฉํ ์ ๋ค์ ๋์ด
ELSE ์๋ต
ELSE๋ฅผ ์๋ตํ๋ฉด ์์์๋ ์ด์ผ๊ธฐํ์ง๋ง ELSE NULL์ด ๋๋ค ์ด ์๋ฏธ๋ ์ฆ ์์ํ์ง ๋ชปํ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ ๊ฐ๋ฅ์ฑ์ด ๋ง๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋งํผ WHEN-THEN์ ์ ๊ผผ๊ผผํ๊ฒ ์ง๋๊ฐ ๊ทธ๋๋ ๊ทธ๋ฅ ELSE๋ก ํญ์ ๋๋จธ์ง๋ฅผ ๊ณ ๋ คํ์
WHEN์ NULL ์ง์ ํ๊ธฐ
CASE๋ฌธ์์ ์์ฑํ๋ฉด์ ๋ดค์ง๋ง WHEN์์ ๊ฐ์ ๋น๊ตํ๋๋ฐ CASE ๋ฐ์์๋ถํฐ ์์๋๋ก WHEN ๊ฐ์ ๋น๊ตํ๋ค ๊ฒ์ CASE ๋ฌธ์์๋ ๊ฐ์ ๋น๊ตํ๋๋ฐ ์์ด์ ๊ฐ = ๋น๊ตํ ๊ฐ ์ด๋ฐ ์์ผ๋ก ๋น๊ตํ์๊ณ ๋จ์ CASE ๋ฌธ์์๋ CASE ๋ฌธ ์ดํ์ ์์ฑํ ๊ฐ์ ๋ํด์ WHEN ๋ฌธ ๋ค์ ์์ฑํ ๊ฐ์ ์๋์ผ๋ก = ์ ํตํด์ ๋น๊ตํ๊ฒ ๋๋ค ์ฌ๊ธฐ์ null๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ = ์ ์ฌ์ฉํด์ ๋น๊ตํ๋ ๊ฒ์ด ์๋๋ผ is null ์ ์ฌ์ฉํด์ ๋น๊ตํ๋ค๋ ์ ์ ๊ธฐ์ตํ์
DECODE NVL
Oracle์์๋ ๋์ฝ๋๋ฅผ ์ํํด์ฃผ๋ DECODE๋ผ๋ ํจ์๊ฐ ๋ด์ฅ๋์ด์๊ณ ์ด๊ฒ์ CASE ๋ฌธ์ ๊ฐ์ ์ฉ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค
DECODE(๋น๊ตํ๋ ค๋ ํ, ์1, ๊ฒฐ๊ณผ1, ์2, ๊ฒฐ๊ณผ2, ELSE)
์ง์ง CASE๋ฌธ๋ณด๋ค๊ฐ ์ด๋ฐ๊ฑฐ๋ณด๋ฉด ์ ์ ์ฐจ๋ฆฌ๊ธฐ ํ๋ค๊ธด ํ์ง๋ง ํ์ค SQL๋ฌธ์ ์๋๊ธฐ ๋๋ฌธ์ CASE๋ฌธ์ ์ตํ์...
Last updated
Was this helpful?