Oracle/PL/SQL

[SQL] Null 주의 사항

타울 2011. 10. 7. 15:11
1. null 값에 정수형 연산을 하게 되면 null이 된다.
null == 12 * 34 * null
- 이것에 대해 실수를 하지 않으려면 정수형 컬럼에 기본값을 주거나, NVL 같은 함수를 사용하여 Null 값을 다른 정수형 값으로 변환을 시켜줘야 한다. 


2. DISTINCT 사용 예외
- DISTINCT 는 사용 방법에 따라 NULL 값 처리 방법이 다르다.

SCOTT 계정의 EMP 테이블을 가지고 테스트를 해보면 다음과 같다.


SELECT DISTINCT comm FROM emp

- null 값도 distinct 되어 결과에 null 값이 포함되어 표시된다.
- 총 데이터 건수 5건


SELECT COUNT(comm) FROM emp

- null 값은 무시되고 결과값 4가 표시된다.


SELECT COUNT(DISTINCT  comm) FROM emp

-  위와 동일하게 null 값은 무시되고 결과값 4가 표시된다.
  


3. Group Function에서의 null 
- 그룹 함수를 이용하여 평균값을 구할때 null 값이 포함되어 있으면 아에 없는 행으로 무시하게 된다.
전체 사용자의 평균 급여를 구하고자 하는데, null 값이 포함된 사람은 무시하게 되어 의미가 없어진다.

- 이 문제는 1번문제와 동일한 문제이다. 기본값을 주던지 NVL 같은 함수로 처리해야 한다.