-- # 널 관련 함수
-- NVL(expr1, expr2)
-- expr1: Null을 가질 수 있는 값이나 표현식
-- expr2: expr1이 Null일 경우 대체할 값
SELECT
emp_no
,emp_nm
--,direct_manager_emp_no
,NVL(direct_manager_emp_no, '최상위관리자') AS 관리자
FROM tb_emp;
SELECT
NVL(emp_nm, '존재안함') AS emp_nm
FROM tb_emp
WHERE emp_nm = '이정직';
SELECT
direct_manager_emp_no
FROM tb_emp
WHERE emp_nm = '김회장'
;
SELECT
-- MAX는 최대값을 찾는 함수
-- MAX(emp_nm) -- 맥스에 없는 애들을 조회하면 null이 나온다.
NVL(MAX(emp_nm), '존재안함') AS emp_nm
FROM tb_emp
WHERE emp_nm = '박찬호'; -- 없는 사람을 조회하면 null이 나오는 것이 아님.
-- null인 값을 가진 것을 조회할때 null이 나오는 것이다.
-- ** 공집합이 출력 되면 max로 null 로 만들고 NAL을 활용해 NULL의 메시지를 출력.
-- NVL2(expr1, expr2, expr3)
-- expr1의 값이 Null이 아니면 expr2를 반환, Null이면 expr3를 반환
SELECT
emp_nm,
NVL2(direct_manager_emp_no, '일반사원', '회장님') AS 직위
FROM tb_emp;
-- NULLIF(expr1, expr2)
-- 두 값이 같으면 NULL리턴, 다르면 expr1 리턴
SELECT
NULLIF('박찬호', '박찬호')
-- NV2L(NULLIF('박찬호', '박찬호'),'일치합니다','다릅니다')
FROM dual;
SELECT
NV2L(NULLIF('박찬호', '박지성'),'일치합니다','다릅니다')
FROM dual;
-- COALESCE(expr1, ...)
-- 많은 표현식 중 Null이 아닌 값이 최초로 발견되면 해당 값을 리턴
SELECT
COALESCE(NULL, NULL, 3000, 4000)
FROM dual;
SELECT
COALESCE(NULL, 5000, NULL, 2000)
FROM dual;
SELECT
COALESCE(7000, NULL, NULL, 8000)
FROM dual;
'데이터베이스' 카테고리의 다른 글
데이터베이스_SQL기본(집계 함수)_예제 22.06.23(day04) (0) | 2022.06.23 |
---|---|
데이터베이스_SQL기본(그룹바이)_교안 22.06.23(day04) (0) | 2022.06.23 |
데이터베이스_SQL기본(함수_ 날짜, CASE,DECODE ,변환 함수(숫자,문자)) _22.06.22(day03) (0) | 2022.06.22 |
데이터베이스_SQL기본(함수_문자열) 연습문제_22.06.22(day03) (0) | 2022.06.22 |
데이터베이스_SQL기본(함수_문자열)_22.06.22(day03) (0) | 2022.06.22 |