SQL NOT IN 절의 NULL 이해
SQL에서 NOT IN
절의 동작은 NULL
값의 존재 여부에 따라 크게 영향을 받습니다. 이러한 미묘한 차이를 주의 깊게 고려하지 않으면 예상치 못한 결과가 발생할 수 있습니다. 다음 예에서는 이러한 동작을 보여줍니다.
예시 쿼리 1:
select 'true' where 3 in (1, 2, 3, null)
이 쿼리는 다음과 같이 평가됩니다.
<code>3 = 1 OR 3 = 2 OR 3 = 3 OR 3 = NULL</code>
3 = 3
이 true이므로 쿼리는 결과를 반환합니다.
예시 쿼리 2:
select 'true' where 3 not in (1, 2, null)
이것은 다음과 같습니다.
3 <> 1 AND 3 <> 2 AND 3 <> NULL
ANSI_NULLS
을 활성화하면(대부분의 SQL 데이터베이스의 표준 설정) 3 <> NULL
은 UNKNOWN
로 평가됩니다. AND
이 포함된 UNKNOWN
조건은 UNKNOWN
이 되고 UNKNOWN
절에서는 WHERE
이 false로 처리됩니다. 결과적으로 이 쿼리는 행을 반환하지 않습니다.
ANSI_NULLS
을 비활성화하면 이 동작이 변경됩니다. ANSI_NULLS
이 없으면 3 <> NULL
이 true로 평가되어 쿼리가 결과를 반환할 수 있습니다. 이는 NULL
가치
결론:
NOT IN
을 사용할 때는 항상 목록 내의 잠재적인 NULL
값을 고려하세요. NULL
의 존재 여부는 SQL의 세 가지 값 논리(TRUE, FALSE, UNKNOWN)로 인해 쿼리 결과에 큰 영향을 미칩니다. 보다 예측 가능하고 신뢰할 수 있는 결과를 얻으려면 NOT IN
값을 사용하여 NULL
을 사용하지 말고 NOT EXISTS
과 같은 대체 접근 방식을 사용하는 것이 좋습니다.
위 내용은 NULL 값은 SQL에서 NOT IN 절의 결과에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!