Oracle #7-5 - DQL 기타 FUNCTION

ennakoidaΒ·2023λ…„ 6μ›” 25일
0

Oracle

λͺ©λ‘ 보기
11/13

πŸ“ 기타 ν•¨μˆ˜

NVL, DECODE, CASE

NVL

SELECT BONUS*SALARY FROM EMPLOYEE;

SELECT NVL(BONUS, 0)*SALARY FROM EMPLOYEE;

NVL은 널 처리 ν•¨μˆ˜λ‘œ, NULL둜 λ˜μ–΄ μžˆλŠ” 컬럼의 값을 μ§€μ •ν•œ 숫자 ν˜Ήμ€ 문자둜 λ³€κ²½ν•˜μ—¬ λ¦¬ν„΄ν•œλ‹€.
NVL(데이터λ₯Ό μ²˜λ¦¬ν•  컬럼λͺ…/κ°’, λ³€κ²½ν•˜κ³ μž ν•˜λŠ” κ°’)의 ν˜•μ‹μœΌλ‘œ μž‘μ„±ν•œλ‹€.


NVL μΆ”κ°€ μ˜ˆμ‹œ 1

SELECT DEPT_CODE FROM EMPLOYEE ORDER BY DEPT_CODE DESC;

SELECT NVL(DEPT_CODE, 'D0') FROM EMPLOYEE ORDER BY DEPT_CODE DESC;


NVL μΆ”κ°€ μ˜ˆμ‹œ 2

-- 이름, λΆ€μ„œμ½”λ“œλ₯Ό 좜λ ₯ν•˜μ—¬λΌ
-- 단, λΆ€μ„œμ½”λ“œκ°€ null인 μ‚¬λžŒμ€ λΆ€μ„œμ½”λ“œκ°€ 'μ—†μŒ' 으둜 좜λ ₯ν•˜μ‹œμ˜€

SELECT EMP_NAME "이름", NVL(DEPT_CODE, 'μ—†μŒ') "λΆ€μ„œμ½”λ“œ" FROM EMPLOYEE;


DECODE

-- 성별 ν‘œμ‹œν•˜κΈ°

SELECT EMP_NAME, EMP_NO,
DECODE(SUBSTR(EMP_NO, 8, 1), '1', '남', '2', 'μ—¬', '3', '남', '4', 'μ—¬', '기타') "성별(DECODE)" 
FROM EMPLOYEE;

DECODEλŠ” μ‰½κ²Œ 말해 IF문으둜, IF-THEN-ELSE문의 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ—¬ 쑰건뢀 쑰회λ₯Ό νŽΈλ¦¬ν•˜κ²Œ μˆ˜ν–‰ν•œλ‹€.
DECODE(지정 ν•­λͺ©, IF, μ°Έ, ELSE IF, μ°Έ, ,,, ELSE.) 의 ν˜•μ‹μœΌλ‘œ μž‘μ„±ν•œλ‹€. λ§ˆμ§€λ§‰μ— 짝이 μ•ˆλ§žλŠ” ν•˜λ‚˜λŠ” ELSE(DEFAULT)둜, ν•΄λ‹Ήν•˜μ§€ μ•ŠλŠ” λͺ¨λ“  값을 μΉ˜ν™˜ν•œλ‹€.


CASE

-- 성별 ν‘œμ‹œν•˜κΈ°

SELECT EMP_NAME, EMP_NO,
CASE 
    WHEN SUBSTR(EMP_NO, 8, 1) = '1' THEN '남'
    WHEN SUBSTR(EMP_NO, 8, 1) = '2' THEN 'μ—¬'
    WHEN SUBSTR(EMP_NO, 8, 1) = '3' THEN '남'
    WHEN SUBSTR(EMP_NO, 8, 1) = '4' THEN 'μ—¬'
    ELSE '무'
END "성별(CASE)"
FROM EMPLOYEE;

DECODEκ°€ IF문이라면, CASEλŠ” SWITCH-CASE문으둜, μ—¬λŸ¬ 가지 κ²½μš°μ— 선택을 ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. (λ²”μœ„κ°’ κ°€λŠ₯)

0개의 λŒ“κΈ€