[Oracle] DECODE / CASE ํ•จ์ˆ˜

๋ผ๋ผยท2023๋…„ 4์›” 3์ผ
0

Oracle

๋ชฉ๋ก ๋ณด๊ธฐ
9/16

๐Ÿ“ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ถœ๋ ฅํ•  ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜ ( DECODE )

๐Ÿ‘‰ DECODE ( ์ปฌ๋Ÿผ๋ช… || ๋ฌธ์ž์—ด, '์˜ˆ์ƒ๊ฐ’', '๋Œ€์ฒด๊ฐ’'. '์˜ˆ์ƒ๊ฐ’2', '๋Œ€์ฒด๊ฐ’2', ..... )

โœ๏ธ ์ฃผ๋ฏผ๋ฒˆํ˜ธ์—์„œ 8๋ฒˆ์งธ ์ž๋ฆฌ์˜ ์ˆ˜๊ฐ€ 1์ด๋ฉด ๋‚จ์ž, 2์ด๋ฉด ์—ฌ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ปฌ๋Ÿผ ์ถ”๊ฐ€ํ•˜๊ธฐ

SELECT EMP_NAME, EMP_NO,
DECODE (SUBSTR (EMP_NO,8,1), '1', '๋‚จ์ž', '2', '์—ฌ์ž') AS GENDER
FROM EMPLOYEE;

โœ๏ธ ๊ฐ ์ง์ฑ…์ฝ”๋“œ์˜ ๋ช…์นญ์„ ์ถœ๋ ฅํ•˜๊ธฐ
โœ๏ธ J1 ๋Œ€ํ‘œ, J2 ๋ถ€์‚ฌ์žฅ, J3 ๋ถ€์žฅ, J4 ๊ณผ์žฅ
โ— ๋งจ ๋งˆ์ง€๋ง‰ ๊ฐ’(์‚ฌ์›)์€ ๋ชจ๋‘ ์•„๋‹ ๊ฒฝ์šฐ ์ถœ๋ ฅ๋  ๊ฐ’ (ELSE)

SELECT EMP_NAME, JOB_CODE,
DECODE (JOB_CODE, 'J1','๋Œ€ํ‘œ','J2','๋ถ€์‚ฌ์žฅ','J3','๋ถ€์žฅ','J4','๊ณผ์žฅ','์‚ฌ์›')
AS ์ง์ฑ…
FROM EMPLOYEE;



๐Ÿ“ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ถœ๋ ฅํ•  ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜ ( CASE )

๐Ÿ‘‰ CASE
WHEN
์กฐ๊ฑด์‹ THEN ์‹คํ–‰๋‚ด์šฉ
ELSE ์‹คํ–‰๋‚ด์šฉ
END

SELECT EMP_NAME, JOB_CODE,
CASE
ใ€€ ใ€€WHEN JOB_CODE = 'J1' THEN '๋Œ€ํ‘œ'
ใ€€ ใ€€WHEN JOB_CODE = 'J2' THEN '๋ถ€์‚ฌ์žฅ'
ใ€€ ใ€€WHEN JOB_CODE = 'J3' THEN '๋ถ€์žฅ'
ใ€€ ใ€€WHEN JOB_CODE = 'J4' THEN '๊ณผ์žฅ'
ใ€€ ใ€€ELSE '์‚ฌ์›' -- ์ƒ๋žต๊ฐ€๋Šฅ

ใ€€ ใ€€END AS ์ง์ฑ…
CASE JOB_CODE
ใ€€ ใ€€ WHEN 'J1' THEN '๋Œ€ํ‘œ'
ใ€€ ใ€€ WHEN 'J2' THEN '๋ถ€์‚ฌ์žฅ'
ใ€€ ใ€€ END
FROM EMPLOYEE;

โœ๏ธ ์›”๊ธ‰์ด 400๋งŒ์› ์ด์ƒ์ด๋ฉด ๊ณ ์•ก
โœ๏ธ ์›”๊ธ‰์ด 400๋ฏธ๋งŒ 300์ด์ƒ์ด๋ฉด ์ค‘๊ฐ„์›”๊ธ‰์ž
โœ๏ธ ๋‚˜๋จธ์ง€๋Š” ๊ทธ์™ธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฐ€์ƒ์ปฌ๋Ÿผ๋งŒ๋“ค๊ธฐ
โœ๏ธ ์ด๋ฆ„, ์›”๊ธ‰, ๊ฒฐ๊ณผ

SELECT EMP_NAME, SALARY,
CASE
ใ€€ใ€€ WHEN SALARY>=4000000 THEN '๊ณ ์•ก'
ใ€€ใ€€ WHEN SALARY>=3000000 THEN '์ค‘๊ฐ„'
ใ€€ใ€€ ELSE '๊ทธ์™ธ'
ใ€€ใ€€ END AS ๊ฒฐ๊ณผ
FROM EMPLOYEE;

profile
์ฝ”๋”ฉํ•˜๋Š” ๋ผ๋ผ :)

0๊ฐœ์˜ ๋Œ“๊ธ€