[함수]2. 단일행함수_기타함수

ColinSong·2020년 11월 19일
0

OracleDB(11g)

목록 보기
15/19
post-thumbnail

목차

2.5 기타함수

이름의미
NVL(exp1, exp2)주어진 exp1이 NULL일 경우 exp2로 치환
NVL2(exp1, exp2, exp3)exp1이 NULL이 아니면 exp2를, NULL이면 exp3로 치환
NULLIF(exp1, exp2)exp1과 exp2의 값이 동일하면 NULL을 반환하고, 다를 경

우 exp1을 반환
DECODE(exp1,exp2,exp3)| exp1이 exp2와 같으면 exp3를 출력

2.5.1 NVL

  • 컬럼이 NULL일 경우 치환할 값을 지정하는 함수

emp 테이블(사원)의 comm 컬럼(성과금)의 NULL값을 0으로 치환

SELECT empno, ename, NVL(comm, 0) comm FROM emp;

2.5.2 NVL2

  • NVL함수와 비슷하게 NULL인 경우를 판단하지만 NULL인지 아닌지에 따른 결과가 다르다.

SELECT empno, ename, nvl2(comm, sal+comm, sal) pay, sal, comm FROM
emp;

2.5.3 NULLIF

  • 두 값을 비교하여 동일한지 아닌지에 대한 결과 반환
  • 두 값이 동일하면 NULL반환, 동일하지 않으면 첫 번째 값 반환
  • 비교할 두 인자는 반드시 같은 데이터타입.
SELECT NULLIF(10, 10), NULLIF('A', 'B') FROM dual;

2.5.4. DECODE

  • 조건에 해당하는 값을 추출할 때 사용
  • 조건이 TRUE일 경우와 FALSE일 경우 반환하는 값을 다르게 지정할 수 있다.
  • FALSE 부분을 연장하여 복잡한 조건을 줄 수 있다(프로그래밍 언어의 else if와 비슷)
SELECT DECODE(100, 100, 'EQUAL', 'UNEQUAL') FROM dual;

SELECT empno, ename, deptno,
DECODE(deptno, 10, '회계팀', 20, '개발팀', 30, '영업팀', 40, '운
영팀') deptname
FROM emp;

2.5.5. CASE 문

  • 조건문 함수
SELECT 컬럼명
CASE    
	WHEN 조건 THEN 출력할값    
	WHEN 조건 THEN 출력할값    ...    
	WHEN 조건 THEN 출력할값    
	ELSE 기본으로출력할값
END AS 별칭
FROM 테이블명;
// DECODE -> CASE문
SELECT
    ename, 
    CASE 
        WHEN deptno = 10 THEN '회계팀'
        WHEN deptno = 20 THEN '개발팀'
        WHEN deptno = 30 THEN '영업팀'
        WHEN deptno = 40 THEN '운영팀'
        ELSE '팀없음'
    END AS team
    AS team
FROM emp;

Reference

  • 참고도서(책) : SQL활용 + 실습 후 정리
  • 🎈2020.11.19

profile
안녕하세요:)

0개의 댓글