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 테이블을 가지고 테스트를 해보면 다음과 같다.
- null 값도 distinct 되어 결과에 null 값이 포함되어 표시된다.
- 총 데이터 건수 5건
- null 값은 무시되고 결과값 4가 표시된다.
- 위와 동일하게 null 값은 무시되고 결과값 4가 표시된다.
3. Group Function에서의 null
- 그룹 함수를 이용하여 평균값을 구할때 null 값이 포함되어 있으면 아에 없는 행으로 무시하게 된다.
전체 사용자의 평균 급여를 구하고자 하는데, null 값이 포함된 사람은 무시하게 되어 의미가 없어진다.
- 이 문제는 1번문제와 동일한 문제이다. 기본값을 주던지 NVL 같은 함수로 처리해야 한다.
$
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 같은 함수로 처리해야 한다.
$