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์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด๋ณด์ž img_1.png ์ด๋ ‡๊ฒŒ 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๋ฌธ์œผ๋กœ ์ž‘์„ฑ

img_2.png

์ด๊ฑด ๋‹จ์ˆœ CASE๋ฌธ์œผ๋กœ ์ž‘์„ฑ img.png

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?