본문 바로가기

SQL/ORACLE

NULL 이란?

1. NULL 의 개념

 

SQL 에서의 NULL 은 미확인 값 또는 아직 적용되지 않은 값을 의미한다. 

0, 공백 또한 값이 있는 것이기 때문에 NULL 과는 다르다.

0 : 하나의 숫자 
공백 : 하나의 문자

데이터가 NULL 이라고 하는 것은 즉,

현재 시점에서 그 값을 정확히 알 수 없기에 표시하지 못한다 라는 의미로 해석할 수 있다.

 

NULL 은 해당 컬럼의 제약 조건 중 NOT NULL 이 없으면 데이터 타입에 상관없이 쓰일 수 있다.

 

만일 NULL 과 연산을 하는 경우에는 결과 값이 NULL 로 출력된다. 

스칼라 함수(REPLACE, NVL, CONCAL 제외) : NULL 로 리턴
집계 함수 : NULL 무시하고 연산 수행

이 데이터를 가지고 교수별로 월급을 얼마나 받을지를 알려면 SAL 컬럼의 값과 COMM 컬럼의 값을 합산해야 한다.

하지만 COMM 컬럼의 값이 NULL 이었던 교수는 제대로 연산되지 않아 NULL 값으로 표시되었다.

연산 대상이 NULL 일 때에는 0 으로 대체하여 연산하게 되면 문제가 해결될 수 있는데,

이럴 때 사용 가능한 함수가 바로 NVL 이다.

 

 

 

2. NVL, NVL2 함수

NVL, NVL2 함수는 NULL 값을 처리하기 위한 함수이다.

NVL(NULL 처리 대상, NULL 일 경우 대체할 값)
NVL2(NULL 처리 대상, NULL 이 아닐 경우의 값, NULL 일 경우 대체할 값)

위와 같이 사용할 수 있고, NULL 처리 대상은 컬럼명이 올 수도 있고, 상수가 올 수도 있다.

앞서 본 예시를 이제 변경해 보도록 하겠다.

함수를 해석해보자면 이렇게 해석할 수 있다.

COMM 컬럼의 데이터 중 NULL 값이 아닌 경우에는 SAL 컬럼의 데이터와 COMM 컬럼의 데이터를 합산하여 출력하고,

NULL 값인 경우에는 COMM 컬럼의 데이터를 무시하고 SAL 컬럼의 데이터만을 출력하도록 하였다.

 

 

3. NULL 비교

 

NULL 을 비교하기 위해서는 IS NULL 또는 IS NOT NULL 을 사용할 수 있다. 

이외의 연산자를 사용하려고 하면 다른 결과를 볼 수 있다.

이렇게 질의 결과가 없는 경우를 공집합 이라고 하며, NULL 은 비교 연산자를 사용할 수 없음을 알 수 있다.

IS NULL : 컬럼 내 데이터 중 NULL 값인 행을 검색하는 연산자
IS NOT NULL : 컬럼 내 데이터 중 NULL 값이 아닌 행을 검색하는 연산자

 

 

4. DECODE 함수

 

DECODE 함수는 SQL 내의 IF - ELSE 으로 표현되는 함수라고 생각하면 된다.

DECODE(EXPRESSION | COLUMN, SEARCH1, RESULT1, [SEARCH2, RESULT2...], [DEFAULT])

앞의 표현식 또는 컬럼의 값이 SEARCH 의 값과 일치하는 경우 RESULT 값을 반환하도록 하는 함수로 

일치하는 값이 없거나 NULL 값이 대상이 되는 경우에는 DEFAULT 값이 반환되고,

만약 DEFAULT 값이  없는 경우에는 NULL 을 반환하게 된다.

 

 

 

 

 

'SQL > ORACLE' 카테고리의 다른 글

정렬 SORTING  (0) 2022.10.24
집합 연산자 : UNION  (0) 2022.10.24
WHERE 절의 조건 적용  (0) 2022.10.22
오라클 데이터 타입  (0) 2022.10.22
SELECT 절 연산자 사용  (0) 2022.10.22