> 데이터 베이스 > MySQL 튜토리얼 > SQL Server에서 NULL = NULL이 False로 평가되는 이유는 무엇입니까?

SQL Server에서 NULL = NULL이 False로 평가되는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-20 23:12:12
원래의
298명이 탐색했습니다.

Why Does NULL = NULL Evaluate to False in SQL Server?

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 = NULLTRUE으로 평가됩니다. 이 동작은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿