>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 `NULL = NULL`이 False를 반환하는 이유는 무엇입니까(그리고 `ansi_nulls`는 이에 어떤 영향을 미칩니까)?

SQL Server에서 `NULL = NULL`이 False를 반환하는 이유는 무엇입니까(그리고 `ansi_nulls`는 이에 어떤 영향을 미칩니까)?

Barbara Streisand
Barbara Streisand원래의
2025-01-20 23:09:09493검색

Why `NULL = NULL` is False in SQL Server (and the `ansi_nulls` Setting)

NULL = NULL이 SQL Server에서 False를 반환하는 이유 이해

SQL Server에서 NULL 값을 처리하면 예상치 못한 결과가 발생하는 경우가 많습니다. = 연산자는 null 허용 열을 비교할 때 <code>false</code>을 반환합니다. NULL은 알 수 없거나 누락된 값을 의미하기 때문입니다.

WHERE와 같은 nullParam = NULL 절 조건은 항상 <code>false</code>으로 평가됩니다. 알 수 없는 두 양의 동일성을 확실히 확인하는 것이 불가능하기 때문입니다.

SQL-92 표준은 이 동작을 규정합니다. NULL = NULL은 true도 false도 아닙니다. 정의되지 않았습니다.

ansi_nulls 설정의 영향

ansi_nulls 설정에 따라 동작이 크게 달라집니다. ansi_nullsOFF으로 설정하면 NULL = NULL은 놀랍게도 <code>true</code>으로 평가됩니다. 이는 아래에 설명되어 있습니다.

코드 예:

<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와 함께:

<code>true</code>

ansi_nulls ON와 함께:

<code>false</code>

NULL 처리 모범 사례

이러한 가변성으로 인해 ansi_nulls 비교 작업을 수행할 때 NULL 설정을 알고 있는 것이 중요합니다. 모호함을 피하려면 IS NULL 값을 확인할 때 항상 IS NOT NULLNULL를 사용하세요. 이는 ansi_nulls 설정에 관계없이 일관되고 예측 가능한 동작을 보장합니다. 이는 안정적인 SQL 코드를 위해 권장되는 접근 방식입니다.

위 내용은 SQL Server에서 `NULL = NULL`이 False를 반환하는 이유는 무엇입니까(그리고 `ansi_nulls`는 이에 어떤 영향을 미칩니까)?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.