SQL에서 NULL이 NULL과 일치하지 않는 이유는 무엇입니까?
저는 SQL 개념이 처음인데, NULL 표현식을 공부하면서 NULL이 NULL과 일치하지 않는 이유가 궁금합니다. 누가 이 개념에 대한 실제 예를 알려줄 수 있습니까?
규칙: NULL도 NULL과 같을 수 없습니다.
비기술적 측면
두 소녀에게 나이가 어떻게 되냐고 묻는다면, 두 소녀 모두 나이가 비슷하다는 것을 의미하지는 않습니다. 두 소녀 모두 나이가 비슷하다는 것을 의미하지는 않습니다.따라서 null과 같을 수 있는 것은 없습니다.
NULL
값이 없음을 나타냅니다.SQL 설계자들은 다음과 같은 질문을 받았을 때 그것이 말이 된다고 결정했습니다.A
(우리가 그 가치를 알지 못하는 경우) 및B
(우리가 그 값을 알지 못하는 경우) 동일해야 하며, 답은 다음과 같아야 합니다.UNKNOWN
그들은 동등할 수도 있고 그렇지 않을 수도 있습니다.우리는 어느 쪽이든 결정할 수 있는 충분한 정보가 없습니다.
당신은 세 가지 가치 있는 논리에 대해 읽어보는 것이 좋을 것입니다 - SQL의 가능한 비교 결과는 다음과 같습니다.TRUE
,FALSE
그리고.UNKNOWN
(맛있는 간식)UNKNOWN
그리고.NULL
동의어로모든 RDBMS가 그렇지는 않음)
NULL
알 수 없는 값입니다.그러므로 그것을 판단하는 것은 거의 말이 되지 않습니다.NULL == NULL
그것은 마치 "이 미지의 값이 그 미지의 값과 동일한가"라고 묻는 것과 같습니다. - 단서가 없습니다.
더 나은 설명을 위해 null이 null false와 같지 않은 이유 확인
NULL은 필드에 데이터가 없는 경우입니다.
IS NULL을 사용하여 NULL 값을 확인할 수 있습니다.
mysql> SELECT NULL IS NULL;
+--------------+
| NULL IS NULL |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
NULL이 실제로 NULL과 동일한 경우를 비교해야 할 경우 다음과 같은 쌍을 사용할 수 있습니다.coalesce
메서드에 특수한 기본값이 있습니다.가장 쉬운 예는 null 가능한 문자열 열입니다.
coalesce(MiddleName,'')=coalesce(@MiddleName,'')
이 비교는 @MiddleName 변수에 null 값이 있고 MiddleName 열에도 null 값이 있으면 true를 반환합니다.물론 빈 문자열과도 일치합니다.만약 그것이 문제라면, 당신은 특별한 가치를 바보 같은 것으로 바꿀 수 있습니다.
coalesce(MiddleName,'<NULL_DEFAULT>')=coalesce(@MiddleName,'<NULL_DEFAULT>')
NULL에는 =를 사용할 수 없으며 IS NULL을 사용할 수도 있습니다.
http://www.w3schools.com/sql/sql_null_values.asp
링크를 따라오세요.
그NULL
가치는 다른 어떤 가치와 비교해도 결코 진실하지 않습니다, 심지어.NULL
.
확인하기 위해 사용할 수 있습니다.
Is Null or Not Null operators ..
틀리면 수정합니다.
SQL에서 WHERE 절은 식의 결과가 TRUE인 경우에만 값을 포함합니다. (이는 "식의 결과가 FALSE가 아닌 경우"와 동일하지 않습니다.)
한쪽에 NULL이 있는 SQL의 이진 작업은 NULL로 평가됩니다(NULL을 알 수 없음의 동의어로 생각).
그렇게
Select ... Where null = null
Select ... Where field = null
Select ... Where null = field
각 경우에 where 클래스가 TRUE가 아닌 NULL로 평가되는 것처럼 모두 행을 반환하지 않습니다.
실제로 NULL은 UNKNOWN 값을 의미합니다. 두 UNKNOWN 값을 비교하는 방법입니다.
사하는것외도를 사용하는 것 IS NULL
SQL Server에서 NULL을 일치시키는 또 다른 방법은 함수입니다.ISNULL
, https://learn.microsoft.com/en-us/sql/t-sql/functions/isnull-transact-sql
SELECT *
FROM TABLE_A t1
INNER JOIN TABLE_B t2 ON ISNULL(t1.somecol, somevalue) = ISNULL(t2.somecol, somevalue)
여기서 일부 값은 'NULL' 또는 0 또는 기타 값일 수 있습니다.
언급URL : https://stackoverflow.com/questions/12853944/why-in-sql-null-cant-match-with-null
'programing' 카테고리의 다른 글
SYS_GUID()를 어떻게 varchar로 변환합니까? (0) | 2023.07.20 |
---|---|
Python 로그 형식 문자열에 사용자 지정 필드를 추가하려면 어떻게 해야 합니까? (0) | 2023.07.20 |
virtualenvwrapper.sh 은 pip 설치 후 어디에 있습니까? (0) | 2023.07.20 |
glib를 위한 "헬로 월드"를 구축할 수 없는 이유는 무엇입니까? (0) | 2023.07.20 |
파이썬에서 빠르고 쉬운 파일 대화? (0) | 2023.07.20 |