SQL Server의 고유한 NULL 비교: NULL = NULL이 종종 거짓인 이유
SQL Server는 다른 프로그래밍 언어와는 다르게 NULL 값을 처리합니다. 일반적인 혼란의 원인은 NULL = NULL
가 일반적으로 FALSE
로 평가된다는 사실입니다. 이것은 버그가 아닙니다. 이는 NULL 자체의 정의에 뿌리를 둔 의도적인 디자인 선택입니다.
SQL Server에서 NULL은 알 수 없거나 누락된 값을 나타냅니다. 따라서 두 개의 NULL을 비교하는 것은 두 개의 알 수 없는 값을 비교하는 것과 같습니다. 값이 정의되지 않았기 때문에 두 값이 같은지 확실하게 말할 수 없습니다. NULL = NULL
의 결과는 종종 FALSE
(또는 상황과 시스템 설정에 따라 NULL
)입니다.
이 동작은 ANSI SQL-92 표준에서 비롯됩니다. 그러나 SQL Server 내에서 ansi_nulls
설정이 미치는 영향을 이해하는 것이 중요합니다.
ansi_nulls
ansi_nulls
설정은 SQL Server가 NULL 비교를 해석하는 방법을 결정합니다.
ansi_nulls ON
(기본값): 이 설정(기본값)에서 NULL = NULL
는 ANSI SQL-92 표준에 맞춰 FALSE
으로 평가됩니다.
ansi_nulls OFF
: 이 설정을 사용하면 NULL = NULL
는 TRUE
으로 평가됩니다. 이 동작은 NULL이 정의되지 않은 상태를 나타내는 특수 값으로 간주되는 다른 많은 프로그래밍 언어에서 처리되는 방식을 반영합니다.
예시:
다음 코드 조각은 차이점을 보여줍니다.
<code class="language-sql">SET ANSI_NULLS OFF; IF NULL = NULL PRINT 'TRUE'; ELSE PRINT 'FALSE'; SET ANSI_NULLS ON; IF NULL = NULL PRINT 'TRUE'; ELSE PRINT 'FALSE';</code>
ansi_nulls OFF
을 사용하면 두 IF
문 모두 "TRUE"를 인쇄합니다. ansi_nulls ON
를 사용하면 첫 번째 IF
문은 "FALSE"를 인쇄하고 두 번째 문도 "FALSE"를 인쇄합니다
강력하고 오류 없는 SQL Server 코드를 작성하려면 ansi_nulls
설정과 NULL 비교의 본질적인 모호성을 이해하는 것이 중요합니다. 예상치 못한 결과를 방지하려면 쿼리에서 NULL이 처리되는 방식에 항상 주의하세요.
위 내용은 SQL Server에서 NULL = NULL이 False로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!