-
SQL - NULL 관련 함수, 선택 함수DataBase/Oracle 2022. 1. 19. 19:23728x90반응형
SQL - NULL 관련 함수
NVL(NULL, 대체값)
반환 값이 NULL일 경우에 대체 값을 제공
--AGE가 NULL이면 +3해도 NULL값이 나온다 SELECT AGE + 3 FROM MEMBERS; SELECT NVL(AGE, 0) FROM MEMBERS; -- AGE가 NULL이면 0값으로 대체
NVL2(입력값, NOTNULL 대체값, NULL 대체값)
NVL에서 조건을 하나 더 확장
-- AGE값을 100/AGE로 바꾸는데 NULL일 경우 0으로 대체 SELECT NVL2(AGE, 100/AGE, 0) FROM MEMBERS;
NULLIF(값1, 값2)
두 값이 같은 경우 NULL 그렇지 않는경우 첫번째 값 반환
SELECT NULLIF(AGE, 19) FROM MEMBERS; -- AGE가 19일 때만 NULL로 변경
선택 함수
DECODE(기준값, 비교값, 출력값, 비교값, 출력값)
조건에 따른 값 선택하기
-- GENDER의 값이 '남성'일 경우 1, 아니면 2 SELECT DECODE(GENDER, '남성', 1, 2) FROM MEMBERS; -- GENDER의 값이 '남성'일 경우 1, 아니면 NULL SELECT DECODE(GENDER, '남성', 1) FROM MEMBERS; -- 011이면 SK 016 이면 KT, 나머지는 '기타' 출력 SELECT DECODE(SUBSTR(PHONE, 1, 3), '011', 'SK', '016', 'KT', '기타') FROM MEMBERS; ------------------------------------------------------------------- -- 직원의 급여를 인상하고자 한다. -- 직급코드가 J7인 직원은 급여의 10%를 인상하고 -- 직급코드가 J6인 직원은 급여의 15%를 인상하고 -- 직급코드가 J5인 직원은 급여의 20%를 인상한다. -- 그 외 직급의 직원은 5%만 인상한다. -- 직원 테이블에서 직원명, 직급코드, 급여, 인상급여(위 조건)을 조회하세요 SELECT EMP_NAME , JOB_CODE , SALARY , DECODE(JOB_CODE, 'J7', SALARY * 1.1, 'J6', SALARY * 1.15, 'J5', SALARY * 1.2, SALARY * 1.05) 인상급여 FROM EMPLOYEE;
CASE
- CASE
WHEN 조건식 THEN 결과값
....
ELSE 결과값
END
-- 사번, 사원명, 급여를 EMPLOYEE 테이블에서 조회하고 -- 급여가 500만원 초과이면 '고급' -- 300~500만원 사이이면 '중급' -- 그 이하는 '초급'으로 출력 처리하고 별칭은 '구분'으로 한다. SELECT EMP_ID, EMP_NAME, SALARY, CASE WHEN SALARY > 5000000 THEN '고급' WHEN SALARY BETWEEN 3000000 AND 5000000 THEN '중급' ELSE '초급' END 구분 FROM EMPLOYEE;
728x90반응형'DataBase > Oracle' 카테고리의 다른 글
SQL - ORDER BY, GROUP BY, HAVING (0) 2022.01.19 SQL - 집계 함수 (0) 2022.01.19 SQL - 형식 변환 함수와 포맷 문자 (0) 2022.01.19 SQL - 날짜 내장 함수 (0) 2022.01.19 SQL - 숫자 내장 함수 (0) 2022.01.19 - CASE