>데이터 베이스 >MySQL 튜토리얼 >SQL에서 NULL과 비교할 때 !=가 실패하는 이유는 무엇입니까?

SQL에서 NULL과 비교할 때 !=가 실패하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-21 14:51:08194검색

Why Does != Fail When Comparing to NULL in SQL?

SQL의 != 연산자와 NULL 난제

SQL의 !=(같지 않음) 연산자는 NULL 값을 처리할 때 독특한 문제를 제시합니다. NULL이 아닌 값을 효과적으로 비교하지만 NULL의 동작은 직관에 어긋납니다.

!= NULL

의 문제

다음 사항을 고려하세요.

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; -- Returns 0 rows
SELECT * FROM MyTable WHERE MyColumn  NULL; -- Also returns 0 rows</code>

MyColumn아님 NULL인 행을 찾는 것을 목표로 하는 이러한 쿼리는 놀랍게도 빈 결과 집합을 반환합니다. 이것은 버그가 아닙니다. NULL의 성격 때문이에요. NULL은 값을 나타내지 않습니다. 이는 가치의 부재를 나타냅니다. 따라서 NULL 또는 !=을 사용하여 값을 =과 비교하면 항상 UNKNOWN 또는 TRUE이 아닌 FALSE이 생성됩니다.

해결책: IS NOT NULL

NULL이 아닌 값을 정확하게 식별하려면 IS NOT NULL 조건자를 사용하세요.

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn IS NOT NULL; -- Returns the expected rows</code>

IS NOT NULL(및 이에 상응하는 IS NULL)은 SQL 비교에서 NULL 값을 처리하기 위해 특별히 설계되었습니다.

NULL이 아닌 값과 비교

!= 연산자는 NULL이 아닌 값과 비교할 때 예상대로 작동합니다.

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != 'ValueX'; -- Returns rows where MyColumn is not 'ValueX'</code>

핵심 요약

NULL 값과 관련된 정확한 SQL 쿼리를 수행하려면 IS NOT NULLIS NULL을 사용해야 합니다. 예상치 못한 결과를 방지하려면 != 비교에 = 또는 NULL을 사용하지 마세요. SQL 문에서 NULL를 안정적으로 처리하려면 이러한 전용 조건자를 사용하세요.

위 내용은 SQL에서 NULL과 비교할 때 !=가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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