본문 바로가기
DB/SQL_Example

일반함수 (by Oracle)

by Mr.DonyStark 2024. 1. 19.

□ NVL 변환 함수

  ○ NVL 함수는 NULL을 0 또는 다른 값으로 변환하기 위한 함수

  ○ NVL(expression1, expression2)

  ○ expression1 : NULL을 포함하는 칼럼 또는 표현식
  ○ expression2 : NULL을 대체하는 값
  ○ 주의 : expression1과 expression2는 반드시 동일한 데이터 타입이어야함

select name, position, sal, comm, sal*comm, sal*nvl(comm,0) s1, nvl(sal*comm,sal) s2
from professor
where deptno = 201

 

□ NVL2 함수

  ○ NVL2 함수는 첫 번째 인수 값이 NULL이 아니면 두 번째 인수 값을 출력하고, 첫 번째 인수 값이 NULL이면 세 번째 인수 값을 출력하는 함수

  ○ NVL2(expression1, expression2, expresion3)

  ○ expression1 : NULL을 포함하는 칼럼 또는 표현식
  ○ expression2 : expression1이 NULL이 아닐 때 반환되는 값

  ○ expression3 : expression1이 NULL일 때 대체되는 값

select name, position, sal, comm, nvl2(comm,sal+comm, sal) total
from professor
where deptno = 102;

 

□ NULLIF 함수

  ○ NULLIF 함수는 두 개의 표현식을 비교하여 값이 동일하면 NULL을 반환하고,일치하지 않으면 첫 번째 표현식의 값을 반환

  ○ NULLIF(expression1, expression2)

  ○ expression1 : expression2와 비교하는 값

select name, userid, lengthb(name), lengthb(userid),
    nullif(lengthb(name), lengthb(userid)) nullif_result
from professor

 

□ COALESCE 함수

  ○ COALESCE 함수는 인수중에서 NULL이 아닌 첫 번째 인수를 반환하는 함수

  ○ COALESCE(expression-1, expression-2, … ,expression-n)

  ○ expression-1 : expression-1이 NULL이 아니면 expression-1을 반환
  ○ expression-2 : expression-1이 NULL이고 expression-2가 NULL이 아니면 expression-2를 반환
  ○ expression-n : expression-1부터 expression-n-1까지의 값이 NULL이고 expression-n이 NULL이 아니면 expression-n을 반환

select name, comm, sal, coalesce(comm, sal, 0) co_result
from professor;

 

□ DECODE 함수

  ○ DECODE 함수는 기존 프로그래밍 언어에서 IF문이나 CASE 문으로 표현되는 복잡한 알고리즘을 하나의 SQL 명령문으로 간단하게 표현할 수 있는 유용한 기능
  ○ DECODE 함수에서 비교 연산자는 ‘=‘만 가능

  ○ DECODE(expression | column, SEARCH1, RESULT1,  [  SEARCH2, RESULT2, …, ] , [, DEFAULT])

  ○ 표현식 또는 칼럼의 값이 SEARCH1 값과 일치하면 RESULT1값을 반환 SEARCH2값과 일치하면 RESULT2 값 반환
  ○ 일치하는 값이 없거나 NULL인 경우에는 기본값 반환
  ○ 기본값이 없는 경우에는 NULL 반환

select name, deptno,
        decode(deptno, 101, '컴퓨터공학과', 102, '멀티미디어학과', 201, '전자공학과', '기계공학과') DNAME 
from professor;

 

□ CASE 함수

  ○ CASE 함수는 DECODE 함수의 기능을 확장한 함수
  ○ DECODE 함수는 표현식 또는 칼럼 값이 ‘=‘ 비교를 통해 조건과 일치하는 경우에만 다른 값으로 대치할 수 있지만,
CASE 함수에서는 산술 연산, 관계 연산, 논리 연산과 같은 다양한 비교가 가능
  ○ 또한 WHEN 절에서 표현식을 다양하게 정의
  ○ 8.1.7에서부터 지원되었으며, 9i에서 SQL, PL/SQL에서 완벽히 지원
  ○ DECODE 함수에 비해 직관적인 문법체계와 다양한 비교 표현식 사용

  ○ CASE expression WHEN comparison exp1 THEN return exp1

     [WHEN comparison exp2 THEN return exp2
      WHEN comparison exp3 THEN return exp3
      ELSE else expression] 
      END

select name, deptno, sal,
    case when deptno = 101 then sal*0.1
         when deptno = 102 then sal*0.2
         when deptno = 201 then sal*0.3
         else 0
    end bobus
from professor;

'DB > SQL_Example' 카테고리의 다른 글

조인함수 (By Oracle)  (0) 2024.01.22
그룹함수 (by Oracle)  (1) 2024.01.22
데이터 타입변환 (by Oracle)  (0) 2024.01.19
문자함수 / 숫자함수 / 날짜함수(by Oracle)  (0) 2024.01.19
오라클DB 기본 쿼리문 ②  (0) 2024.01.17