2017-02-09 1 views
0

알아낼 수없는 일부 SQL 쿼리에 문제가 있습니다.같지 않음 <> 쿼리가 NULL 값을 제외합니다.

SELECT * FROM MasterList WHERE Requested <> "Yes"; 

테이블에 위의 쿼리를 실행하면 60 개의 레코드가 반환됩니다. 그러나 거기에 300 가까이 있어야합니다. 문제는, 레코드 중 일부는 Requested 필드에서 그냥 비어 있으며 다른 사람은 NULL 생각합니다. 그러나 NULL은 여전히 ​​"예"와 같지 않은 것으로 간주 할 것입니다. 그렇지 않다면 되돌아 가야하고 모든 null 필드를 '공백'하지 않고도 그 주위에 방법이 있습니까?

답변

0

널 (null)는 다음과 같은 쿼리를 실행해야합니다, 비교 계산되지 않습니다 :

SELECT * FROM MasterList WHERE Requested <> "Yes" OR Requested IS NULL; 
+0

감사합니다. 나는 NULL을 설명하는 방식으로 쿼리를 만들 수있다. –

0

null <> 'Yes' 표현 따라서 당신이 당신의 결과 집합에이 조건을 충족 레코드를 포함하는 별도의 is null 체크 추가해야합니다, null로 평가 때문에 발생합니다도에, 아무것도 null의 비교 :

select * from MasterList where Requested <> "Yes" or Requested is null 

PS를 null 그 자체는 항상 null을 반환합니다. 당신이 null 값을 반환하려면

2

<=>
NULL 안전과 동일. 이 연산자는 = 연산자와 같은 평등 비교를 수행하지만 두 피연산자가 모두 NULL이면 1을 반환하고 하나의 피연산자가 NULL이면 NULL이 아닌 0을 반환합니다. 귀하의 경우에 사용

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; 
    -> 1, 1, 0 
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; 
    -> 1, NULL, NULL 

: 그것에 대해

SELECT * FROM MasterList WHERE not Requested <=> "Yes" 
관련 문제