Null 값 및 조인
조인되는 테이블의 열에 Null 값이 있을 경우 Null 값은 서로 일치하지 않습니다. 조인되는 테이블 중 한 테이블의 열에 있는 Null 값은 외부 조인을 사용해야만 반환됩니다(WHERE 절이 Null 값을 배제하지 않을 경우).
다음 두 테이블에는 조인에 포함되는 열에 모두 NULL이 있습니다.
table1 table2
a b c d
------- ------ ------- ------
1 one NULL two
NULL three 4 four
4 join4
c 열에 대해 a 열의 값을 비교하는 조인은 NULL 값을 가진 열에서는 일치하는 행이 없습니다.
SELECT *
FROM table1 t1 JOIN table2 t2
ON t1.a = t2.c
ORDER BY t1.a
a와 c 열에서 값이 4인 한 행만 반환됩니다.
a b c d
----------- ------ ----------- ------
4 join4 4 four
(1 row(s) affected)
기본 테이블에서 반환되는 Null 값은 외부 조인에서 반환되는 Null 값과 구분하기가 어렵습니다. 예를 들어 다음 SELECT 문은 위의 두 테이블에 대해 왼쪽 외부 조인을 수행합니다.
SELECT *
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON t1.a = t2.c
ORDER BY t1.a
결과 집합은 다음과 같습니다.
a b c d
----------- ------ ----------- ------
NULL three NULL NULL
1 one NULL NULL
4 join4 4 four
(3 row(s) affected)
위의 결과에서 데이터에 포함된 NULL과 조인 실패를 나타내는 NULL을 구분하기가 어렵습니다. 조인되는 데이터에 Null 값이 있으면 일반 조인을 사용하여 이를 결과에서 제외하는 것이 좋습니다.
참고 항목
관련 자료
sp_dbcmptlevel(Transact-SQL)
WHERE(Transact-SQL)