문제는 NULL이 자체와 다른 것으로 간주되지 않지만 이상한 부분은 자체와 동일 하지 않다는 것입니다.
다음 문장을 고려하십시오 (SQL Server T-SQL에서는 BTW가 불법이지만 My-SQL에서는 유효하지만 ANSI가 null을 정의하는 것이므로 SQL 문에서도 대소 문자를 사용하여 확인할 수 있습니다).
SELECT NULL = NULL -- Results in NULL
SELECT NULL <> NULL -- Results in NULL
따라서 질문에 대한 참 / 거짓 답변이 없으며 대신 답도 null입니다.
예를 들어
- 명시 적으로 사용하지 않는 경우에 null 값이 항상 ELSE 절을 사용하는 CASE 문은, 언제 NULL 조건 (IS NOT 조건 )
WHEN NULL
- 문자열 연결
SELECT a + NULL -- Results in NULL
- WHERE IN 또는 WHERE NOT IN 절에서, 올바른 결과를 원하는 것처럼 상관 부속 조회에서 널값을 필터링하도록하십시오.
을 지정하여 SQL Server에서이 동작을 무시할 수 SET ANSI_NULLS OFF
있지만 그렇지 않습니다. 권장하고 많은 문제가 발생할 수해서는 안 단순히 때문에 표준 편차.
참고로 My-SQL에는 <=>
null 비교를 위해 특수 연산자를 사용하는 옵션이 있습니다 .
비교해 보면, 일반 프로그래밍 언어에서 null 처리는 정규 값이며 자체와 동일하지만 NAN 값은 자체와 동일하지 않지만 적어도 자체와 비교할 때 'false'를 반환합니다. 다른 프로그래밍 언어가 다른 구현 언어를 가지고 있는지 확인하십시오).
그러나 기본 언어 (예 : VB 등)에는 'null'키워드가 없으며 대신 'Nothing'키워드를 사용합니다.이 키워드는 직접 비교에 사용할 수 없으며 대신 SQL에서 'IS'를 사용해야합니다. 그러나 실제로는 (간접 비교를 사용할 때) 자체와 같습니다.