집 >데이터 베이스 >MySQL 튜토리얼 >SQL에서 NULL과 비교할 때 !=가 실패하는 이유는 무엇입니까?
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 NULL
및 IS NULL
을 사용해야 합니다. 예상치 못한 결과를 방지하려면 !=
비교에 =
또는 NULL
을 사용하지 마세요. SQL 문에서 NULL
를 안정적으로 처리하려면 이러한 전용 조건자를 사용하세요.
위 내용은 SQL에서 NULL과 비교할 때 !=가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!