□ 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 |