2017-10-12 4 views
1

9000 개의 항목이있는 테이블이 있으며 테스트를 위해 하나의 개체 이름이 "LOL"로 바뀌 었습니다. 이제는 그 문자열과 일치하지 않는 모든 데이터 레코드를 보여주고 싶습니다. 그래서, 결과는 8999 여야합니다. 그러나 나는 정말로 이상한 620을 얻습니다.데이터베이스 문을 실행하는 이상한 결과

검색어 :

SELECT Count(*) FROM [xxx] WHERE xxx.name = "LOL"; 
>>Result 1 
SELECT Count(*) FROM [xxx] WHERE xxx.name <> "LOL"; 
>>Result 620 

그것은 MS 액세스 DB 및 해당 열의 데이터 유형이의 짧은 텍스트입니다.

정말 많은 데이터 레코드가 필터링되는 이유는 무엇입니까? NOT EQUAL 연산자가 Access DB에서 작동하지 않는 것처럼 보입니다. 동일하지 않은 경우 동일한 결과가 발생합니다.

+0

데이터를 모른 채 말하기가 어렵습니다. 개수 집계없이 반환되는 행 수 "select * from xxx where name <> 'LOL'"? – kurdy

+0

또한 620 개의 데이터 레코드가 있습니다. – EchoCache

답변

1

null 값을 가진 다른 열이 있습니까?

SELECT Count(*) FROM [xxx] WHERE xxx.name is null or xxx.name <> "LOL"; 
+0

잘 작동합니다! 그것이 이유였습니다. 이것의 원인을 설명 할 수 있습니까? 나는 <>으로 NULL 값을 필터링 할 것이라고 생각했기 때문에. – EchoCache

+0

네 논리가 옳다. 그러나 DBMS는 null 값을 문자열과 비교하지 않고 개수에 추가하지 않으므로 해당 조건을 추가해야합니다. – farbiondriven