QGIS 필터 표현식에서! = NULL과 IS NOT NULL의 차이점은 무엇입니까?


26

NULL다른 값에 필터를 적용하려는 값이 포함 된 속성이있는 모양 레이어가 있습니다 NULL.

여기에 이미지 설명을 입력하십시오

이러한 쿼리 구성에 사용 가능한 GUI를 사용하면 직관적으로 시도 할 수 있습니다.

"obj_art" != NULL

여기에 이미지 설명을 입력하십시오

어떤 수단 '내게에서 "obj_art"다른 속성을 가진 모든 기능을 제공 NULL' (이 카운트 확실히 더 0 이하). 이 쿼리를 테스트하면 내 관점에서 이상한 결과를 얻을 수 있습니다.

여기에 이미지 설명을 입력하십시오

지금까지 배운 것은 다음을 사용하여이를 달성 할 수 있다는 것입니다.

"obj_art" IS NOT NULL

문제는 차이 무엇이며, != NULL그리고 IS NOT NULL?


내가 아는 한 그것은 단지 구문입니다. Null 사용 여부입니다. 다른 용도 = 또는! =
nielsgerrits

"하나는 직관적으로 시도" 정말? 왜? NULL은 값이 아닙니다. 말 그대로 가치가 없습니다. NULL은 "같지 않습니다"! 연산자 !=는 "아니다"를 의미하지 않습니다. "같지 않음"을 의미합니다. IS NOT"이 아니다"를 의미하므로 이것이 완벽하게 직관적이라고 생각합니다. :)
Lightness Race with Monica

@LightnessRacesinOrbit NULL가치가 아니라는 것을 이해하지 않고 사용하는 것이 직관적 =이거나 !=다른 가치를 평가하는 방법이라고 생각합니다. 그것이 아니라 NULL실제로 사용하는 IS NOT것이 직관적 인 가치가 아니라는 것을 알기 전까지 는 아닙니다 !=. 많은 사람들이 NULL진정으로 무엇인지 알지 못합니다 .
Midavalo

또한 GUI NULL에는 값 목록 (위의 cp)에 있으므로 '정상'값으로 취급됩니다. 그리고 버튼이 없거나 IS NULL, 내가 그리워 했습니까?! 따라서 그러한 쿼리를 입력하고 지식을 가지고 입력 할 때, NULL직감에 대해 논의 할 수있는 특별한 방식으로 다루어야하지만이 GUI의 맥락에서는 그렇지 않습니다.
Jochen Schwarze

@ Midavalo : 사실이지만, 그것이 무엇인지 찾지 않으면 언어 기능을 사용하지 않는 것이 좋습니다. :) 추측하여 프로그래밍하는 것이 효과가 없습니다.
Monica와의 가벼움 경주

답변:


33

면책 조항 : QGIS에서 필터링을위한 구문이 SQL에서 작동하기 때문에 여기서는 SQL 규칙이 적용된다고 가정합니다. 그것이 완전히 정확한지 확실하지는 않지만 논리적으로 보이며 행동을 설명합니다.


필터는 SQL과 함께 작동하므로 답을 찾아야합니다.

즉, 논리 연산자를와 함께 사용 null하면 결과는 항상 null입니다. 그러나을 테스트하기 위해 nullSQL에는 IS (NOT)비교 기능 이 제공되어 원하는 필터링에 사용할 수 있습니다.

좀 더 심도있는 논의를 위해 보헤미안의 stackoverflow 답변 을 확인하십시오 .


19

NULL값 이 아니므 로 같 =거나 같을 수 없습니다 !=. 는 제로와 동일하지 0되는 것이다 값.

A NULL는보고있는 셀에 값이 기록되지 않았 음을 나타냅니다. 값이 존재하는지 확인하려면 셀 IS NULL인지 여부 를 묻습니다.IS NOT NULL

  • IS NULL 셀이 비어 있는지 확인
  • IS NOT NULL 셀이 비어 있지 않은지 확인

값이 One, Two이고 Three나머지 가있는 레코드가 있고 필요 NULL없는 모든 것을 찾으려면 Two다음과 같은 것을 사용해야합니다

value != 'Two' OR value IS NULL

같거나 같지 않은 쿼리에서 NULL 값이 반환되지 않기 때문입니다. value != 'Three'결과 만 사용하면 같거나 같지 않은 값이 아니므 NULL로 모든 레코드 가 제외됩니다 NULL.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.