๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/SQL Database

[SQL / Database] IF / CASE ๋ฌธ๋ฒ• ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

by Connecting-the-dots 2023. 5. 28.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’กIF / CASE ๋ฌธ๋ฒ• ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๐Ÿ’œ IF

IF(์กฐ๊ฑด์‹, ์กฐ๊ฑด์‹์ด ์ฐธ์ผ ๋•Œ ๊ฐ’, ์กฐ๊ฑด์‹์ด ๊ฑฐ์ง“์ผ ๋•Œ ๊ฐ’)
  • SQL๋ฌธ์„ ์ž‘์„ฑํ•  ๋•Œ ๋ฌธ์ž ํ˜น์€ ์ˆซ์ž์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ณณ์— ๊ณ ์ •๊ฐ’์ด ์•„๋‹ˆ๋ผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์œ ๋™์ ์ธ ๊ฐ’์„ ๋„ฃ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ  IF ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • IF ํ•จ์ˆ˜๋Š” ์œ„์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ฉฐ, ์กฐ๊ฑด์‹์€  WHERE ๋ฌธ ์ž‘์„ฑํ•˜๋“ฏ์ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.
SELECT ๊ณ ๊ฐ๋ช…, ์‚ฌ์šฉ๊ธˆ์•ก, IF(์‚ฌ์šฉ๊ธˆ์•ก>200000, "์šฐ์ˆ˜", "์ผ๋ฐ˜") AS ๊ณ ๊ฐ๋“ฑ๊ธ‰ FROM card
  • ์˜ˆ๋ฅผ ๋“ค์–ด, card ํ…Œ์ด๋ธ”์—์„œ ๊ณ ๊ฐ๋ช…๊ณผ ์‚ฌ์šฉ๊ธˆ์•ก๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๊ธˆ์•ก์„ 20๋งŒ์› ๊ธฐ์ค€์œผ๋กœ ๊ณ ๊ฐ๋“ฑ๊ธ‰์„ ์šฐ์ˆ˜์™€ ์ผ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ณ ๊ฐ๋“ฑ๊ธ‰์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ปฌ๋Ÿผ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.
  • ๋งŒ์•ฝ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 3๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด IF ํ•จ์ˆ˜ ์•ˆ์— IF ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋˜์ง€๋งŒ ๋ณด๋‹ค ์ง๊ด€์ ์ธ CASE ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๐Ÿ’œ CASE

CASE 
  WHEN ์กฐ๊ฑด์‹1 THEN ๋‚จ๊ธธ๊ฐ’1
  WHEN ์กฐ๊ฑด์‹2 THEN ๋‚จ๊ธธ๊ฐ’2
  WHEN ์กฐ๊ฑด์‹3 THEN ๋‚จ๊ธธ๊ฐ’3
  ELSE ๋‚จ๊ธธ๊ฐ’4
END
  • IF ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋ฌธ์ž ํ˜น์€ ์ˆซ์ž์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ณณ์— CASE ๋ฌธ๋ฒ•์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์œ„์™€ ๊ฐ™์ด  CASE ์™€ END ์‚ฌ์ด์— "WHEN ์กฐ๊ฑด์‹ THEN ๋‚จ๊ธธ๊ฐ’" ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ปดํ“จํ„ฐ๋Š” ์กฐ๊ฑด์‹์„ ์œ„์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์‹คํ–‰ํ•˜๋ฉด์„œ ์กฐ๊ฑด์‹์ด ๋งž์„ ๊ฒฝ์šฐ ๋‚จ๊ธธ๊ฐ’์„ ๊ทธ ์ž๋ฆฌ์— ๋‚จ๊ธฐ๊ณ  CASE ๋ฌธ๋ฒ•์„ ์ข…๋ฃŒํ•œ๋‹ค. 
728x90
๋ฐ˜์‘ํ˜•