2017-10-12 8 views
1

私は9000項目のテーブルを持っています。テストの理由から、私は1つのオブジェクトの名前を "LOL"に変更しました。今私は、その文字列と一致しないすべてのデータレコードを表示したいと思います。ですから、結果は8999でなければなりませんが、私は本当に変です。データベース文を実行すると奇妙な結果が出る

問合せ:

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

それはMS AccessのDBだと、その列のデータ型は、短いテキストです。

私は本当にそれを得ることはできません。なぜ、非常に多くのデータレコードが除外されているのですか? NOT EQUALオペレータがAccess DBで動作しないようです。 NOT LIKEは同じ結果をもたらします。

+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はヌル値を文字列と比較することはできませんし、カウントにそれらを追加しないので、その条件を追加する必要があります。 – farbiondriven