본문 바로가기

SQL/SQL 예제

[SQL] Part2 NVL, NVL2 (NULL 값 처리)

반응형

초보자를 위한 SQL 200제의 문제를 바탕으로 작성되었습니다.


 

NULL 값 대신에 다른 값을 출력하는 기능을 하는 NVL, NVL2 함수에 대해 정리합니다.

 

  • NVL('특정 컬럼', '특정값' ): 특정 컬럼의 값이 NULL인 경우 특정값으로 출력하고 싶을때 사용.
  • NVL2('NULL값이 있는 컬럼', 'NOT NULL인 경우', 'NULL인 경우' ): NULL값이 아닐 경우 특정값으로 출력하고 싶을때 사용. 

 

1. NVL

select ename, comm, nvl(comm, 0)
    from emp;

comm이 null이 아닌 경우 자신의 comm이 출력되고 null인 경우 0이 출력됩니다.

실제 데이터가 0으로 변경되는 것은 아니고 출력되는 쿼리에만 0으로 보이는 것입니다. 

 

 

 

sal과 comm을 더한 값을 구하고 싶을때 NVL 함수를 사용하지 않고 그냥 더하게 되면

select ename, sal, comm, sal+comm
    from emp;

comm이 null값 인 경우 sal + comm 컬럼도 null이 됩니다.

 

 

 

이를 해결하기 위해 NVL함수를 사용하면 구하고 싶은 값을 쉽게 구할수 있게 됩니다.

select ename, sal, comm, sal+nvl(comm, 0)
    from emp;

 

 

2. NVL2

NVL2 함수는 NULL값이 아닐 경우 특정값으로 출력하고 싶을때 사용합니다.

 

위와 동일한 테이블에서 comm이 null이 아닌 경우는 sal + comm 출력하고 null인 경우 sal을 출력하기 위해서 다음과 같은 쿼리를 작성할 수 있습니다.

select ename, sal, comm, nvl2(comm, sal+comm, sal)
    from emp;

 

반응형

'SQL > SQL 예제' 카테고리의 다른 글

[SQL] 원도우 함수(WINDOW FUNCTION)1  (0) 2022.08.13
[SQL] Part2 DECODE, CASE (IF문 )  (0) 2022.08.09
[SQL] 암시적 형 변환  (0) 2022.08.09
[SQL] Part2 날짜형 데이터  (0) 2022.08.08
[SQL] Part2 문자열  (0) 2022.08.07