Null이 Null이 아닌 다른 것과 같지 않은 언어는 몇 개입니까?
-
09-06-2019 - |
문제
Null이 Null이 아닌 다른 것과 같지 않은 언어는 몇 개입니까?
해결책
null은 알 수 없음/정의되지 않음을 의미하기 때문에 SQL(논리 언어)에서는 이런 방식입니다.
그러나 프로그래밍 언어(예: C++ 또는 C#)에서 널 포인터/참조는 특정 의미를 갖는 특정 값입니다.
두 개의 무(無)는 동등하지만, 두 개의 미지수는 동등하지 않습니다.혼란은 두 개념에 동일한 이름(null)이 사용된다는 사실에서 비롯됩니다.
다른 팁
VB6에서는 표현식 Null = Null
생산할 것이다 Null
대신에 True
당신이 예상했던대로.부울에 할당하려고하면 런타임 오류가 발생하지만 조건으로 사용하는 경우 "If ... Then
"처럼 행동할 거야 False
.게다가 Null <> Null
~ 할 것이다 또한생산하다 Null
, 그래서:
VB6에서는 이렇게 말할 수 있습니다. Null
그 자체(또는 다른 어떤 것)와도 같지도, 같지도 않습니다!
당신은 그것을 사용하여 테스트해야합니다 IsNull()
기능.
VB6에는 다른 특별한 값도 있습니다:
Nothing
객체 참조용.Nothing = Nothing
컴파일 오류입니다.("를 사용하여 비교해야 합니다.is
")Missing
제공되지 않은 선택적 매개변수의 경우.문자 그대로의 표현이 없으므로 글을 쓸 수도 없습니다.Missing = Missing
.(테스트는IsMissing(foo)
)Empty
초기화되지 않은 변수의 경우.이것은 그 자체와 동일한 테스트를 수행합니다. 또한 함수IsEmpty()
.- ...내가 잊어버린 게 있으면 알려줘
나는 VB에 약간 혐오감을 느꼈던 것을 기억합니다.
오라클은 이렇습니다.
SELECT * FROM dual WHERE NULL=null; --no rows returned
MySQL에는 양쪽이 같거나 양쪽이 null인 경우 true를 반환하는 null 안전 동등 연산자 <=>가 있습니다.보다 MySQL 문서.
C#에서 Nullable<bool>은 논리 연산자와 관련하여 흥미로운 속성을 가지고 있지만 항등 연산자는 해당 언어의 다른 형식과 동일합니다(예: ((bool?)null == (bool?)null) == true) .
보존하기 위해 단락된 단락된 논리 연산자의 동작과 단락되지 않은 논리 연산자와의 일관성을 유지하기 위해 nullable 부울에는 몇 가지 흥미로운 속성이 있습니다.예를 들어:진실 || null == true.false && null == false 등이는 다음과 같은 다른 3개 값 논리 언어와 정면으로 모순됩니다. ANSI SQL.
다음과 같이 Ruby가 작동하도록 만들 수 있습니다.
class Null
def self.==(other);false;end
end
n=Null
print "Null equals nothing" if n!=Null
SQL에서는 다음과 같은 작업을 수행해야 합니다.
WHERE column is NULL
오히려
WHERE column = NULL