Backend/DataBase

๐Ÿค” CASE WHEN ~ THEN ~ ELSE END

Seyun(Marco) 2021. 1. 11. 15:00
728x90

๐Ÿค” CASE WHEN ~ THEN ~ ELSE END

์„œ๋ก 

  • Oracle, MySQL ๋“ฑ ๋ชจ๋“  DBMS์—์„œ ๊ฐ€๋Šฅํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ If ~ else if ~ else์™€ ๊ฐ™์€ CASE WHEN๋ฌธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ์˜ˆ์ œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ์ค‘์„ฑํ™” ์—ฌ๋ถ€ ํŒŒ์•…ํ•˜๊ธฐ ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜•์‹

CASE ์ปฌ๋Ÿผ๋ช…(์ƒ๋žต๊ฐ€๋Šฅ)
    WHEN ์กฐ๊ฑด์‹ THEN ๊ฒฐ๊ณผ
    WHEN ์กฐ๊ฑด์‹ THEN ๊ฒฐ๊ณผ
    ELSE ๊ฒฐ๊ณผ
END
  • WHEN์ ˆ์—๋Š” ํ•ด๋‹น ์กฐ๊ฑด์„, THEN์—๋Š” true์ผ ๊ฒฝ์šฐ์— ๊ฒฐ๊ณผ๋ฅผ ELSE๋Š” ๋ชจ๋“  ์กฐ๊ฑด์„ ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๊ฐ’์„ ์ ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ ELSE ๋ถ€๋ถ„์ด ์—†๊ณ  ์กฐ๊ฑด์ด true๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

  • ์œ„์˜ ๋ฌธ์ œ์—์„œ ์ค‘์„ฑํ™” ์—ฌ๋ถ€(SEX_UPON_INTAKE์—์„œ Neutered, Spayed๊ฐ€ ์žˆ์œผ๋ฉด ์ค‘์„ฑํ™”๋ฅผ ํ•œ ๊ฒฝ์šฐ)๋ฅผ ๋‚˜ํƒ€๋‚ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
SELECT ANIMAL_ID, NAME, 
    CASE
        WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
    ELSE 'X'
    END
AS ์ค‘์„ฑํ™”
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

case_when_then_else_end-1

728x90
728x90