2017-10-12 75 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 Access數據庫和列的數據類型是簡短的文字。

我真的不明白,爲什麼有這麼多的數據記錄被過濾掉。看起來,NOT EQUAL運算符在Access數據庫中不起作用。不喜歡導致相同的結果。

+0

很難說不知道數據。沒有計數聚合返回多少行「select * from xxx where name <>'LOL'」? – kurdy

+0

還有620條數據記錄。 – EchoCache

回答

1

你有其他列的空值嗎?

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

它的工作原理!這是原因。你能解釋這背後的原因嗎?因爲我認爲<>我也會過濾空值。 – EchoCache

+0

是的,你的邏輯是正確的。但是,DBMS不能將空值與字符串進行比較,也不會將它們添加到計數中,因此需要添加該條件。 – farbiondriven