오라클SQL 일반함수

Updated:

일반 함수

학습 주제

  • NULL값을 치환하는 함수
  • 조건 비교 함수

학습 목표

  • 계산 수행 전 NULL값을 다른 값으로 치환해서 처리할 수 있다.
  • 조건에 따라 다양한 작업을 수행하도록 함수를 사용할 수 있다.

일반 함수 사용하기

일반 함수는 타입에 상관없이 모든 타입에 쓸 수 있는 함수를 말한다.

NVL

NVL(exp1, exp2)

  • NULL값을 다른 값으로 바꿀 때 사용한다.
  • exp1이 NULL이면 exp2를 반환하고, exp1이 NOT NULL이면 exp1을 반환한다.
  • 모든 데이터 타입에 적용 가능하며, exp1, exp2 데이터 타입을 일치시켜야 한다.

예시

SELECT ename, sal, comm, sal+comm, sal+NVL(comm, 0)
FROM emp
WHERE deptno = 30;

NVL2

NVL2(exp1, exp2, exp3)

  • exp1이 NULL이 아닌 경우 exp2를 반환하고, exp1이 NULL일 경우 exp3을 반환한다.
  • exp1은 임의의 데이터형을 가질 수 있으며, exp2와 exp3 데이터 타입을 일치시켜야 한다.

예시

SELECT player_name, position, NVL2(position, position || '담당', '등록안됨')
FROM player
WHERE team_id = 'K08';

NULLIF

NULLIF(exp1, exp2)

  • NULLIF는 exp1와 exp2를 비교한다.
  • exp1와 exp2가 같으면 NULL값을 반환하고, exp1와 exp2가 같지 않으면 exp1을 반환한다.
  • exp1에는 NULL을 지정할 수 없다.

예시

--30번 부서원들의 사원이름, 업무, 업무가 'SALESMAN'인 경우 NULL값으로 변경해서 조회
--SALESMAN을 조회하고 싶지 않을 때 사용한다.
SELECT ename, job, NULLIF(job, 'SALESMAN') AS result
FROM emp
WHERE deptno = 30;

COALESCE

COALESCE(exp1, …, expN)

  • COALESCE 함수는 나열된 값을 순차적으로 체크하여 NULL이 아닌 첫 번째 인수를 반환한다.
  • 모든 인수가 NULL인 경우에 NULL을 반환한다.

예시

--NULL이 아닌 값을 조회하겠다. COALESCE
SELECT ename, comm, sal, COALESCE(comm, sal, 50)
FROM emp;

DECODE

DECODE(VALUE, IF1, THEN1, IF2, THEN2, …, default값)

  • DECODE는 WHERE절처럼 조건을 사용할 수 있다.
  • VALUE값이 IF1일 경우, THEN1값으로 바꿔주고, VALUE값이 IF2일 경우 THEN2값으로 바꿔준다.
  • 일치하는 것을 발견하지 못한 경우 DEFAULT값을 반환한다.
  • DEFAULT값이 생략되면, 오라클은 NULL을 반환한다.

예시

SELECT ename, sal, DECODE(sal, 3000, 'A팀', '기타')
FROM emp;

CASE함수

CASE WHEN 비교조건1, THEN 처리1
	 WHEN 비교조건2, THEN 처리2
	 .
	 .
	 .
	 WHEN 비교조건N, THEN 처리N
	 ELSE DEFAULT
END
SELECT player_name, height
	   CASE WHEN height < 185 THEN 'C팀'
	        WHEN height < 190 THEN 'B팀'
	   ELSE 'A팀' END 결과
FROM player
WHERE position = 'GK'

DECODE함수는 equal처리 밖에 못하지만, CASE함수는 그 외의 처리도 가능하기 때문에 DECODE함수보다 활용도가 높다.

Comments