문제

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top