case 표현은 if-then-else 논리와 유사한 방식으로 표현식을 작성해 SQL의 비교 연산 기능을 보완하는 역할을 한다.
: SIMPLE_CASE_EXPRESSION 조건이 맞으면 SIMPLE_CASE_EXPRESSION 조건 내의 THEN 절을 수행하고, 조건이 맞지 않으면 ELSE 절을 수행한다.
✏️ 입력
SELECT LOC
,CASE LOC WHEN 'NEW YORK' THEN 'EAST'
WHEN 'BOSTON' THEN 'EAST'
WHEN 'CHICAGO' THEN 'CENTER'
WHEN 'DALLAS' THEN 'CENTER'
ELSE 'ETC'
END AS AREA
FROM DEPT; //부서정보에서 부서위치를 미국의 동부, 중부, 서부로 구분
🖥️ 출력
: SEARCHED_CASE_EXPRESSION 조건이 맞으면 SEARCHED_CASE_EXPRESSION 조건 내의 THEN 절을 수행하고, 조건이 맞지 않으면 ELSE 절을 수행한다.
✏️ 입력
SELECT ENAME
,CASE WHEN SAL >= 3000 THEN 'HIGH'
WHEN SAL >= 1000 THEN 'MID'
ELSE 'LOW'
END AS SALARY_GRADE
FROM EMP; //EMP에서 급여가 3000이상이면 상등급, 1000이상이면 중등급, 1000미만이면 하등급으로 분류
🖥️ 출력
: ORACLE에서만 사용하는 함수, 표현식 값이 기준값1이면 값1을 출력하고 기준값2이면 값2를출력한다. 기준값이 없으면 디폴트값을 출력.
✏️ 입력
SELECT ENAME AS 성명
,DEPTNO AS 부서번호
,DECODE(DEPTNO, 10, '10번O', '10번X') AS DECODE
FROM EMP;
🖥️ 출력
: 표현식1의 결과 값이 NULL이면 표현식2의 값을 출력. 단 표현식1과 표현식2의 결과 데이터 타입이 같아야 한다.
✏️ 입력
SELECT MGR, NVL(MGR,0) AS MGR FROM EMP;
🖥️ 출력
: 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴한다.
✏️ 입력
SELECT ENAME, EMPNO, MGR, NULLIF(MGR, 7839) AS NUIF FROM EMP;
// MGR이 7839와 같이면 NULL을 리턴하고 같지않으면 MGR을 리턴
🖥️ 출력
: 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모든 표현식이 NULL이라면 NULL을 리턴한다.
✏️ 입력
SELECT ENAME, COMM, SAL, COALESCE(COMM, SAL) AS COAL, COALESCE(COMM, 0) FROM EMP;
//커미션을 1차선택 값으로, 급여를 2차선택값으로 하되, 두 컬럼 모두 NULL인경우는 NULL로 출력
🖥️ 출력