2016-08-12 1 views
1

私の会社の製品の詳細を含むテーブルがあり、その列の1つには製品のカテゴリがありますが、まだ分類されていない製品の空の文字列もあります。SQL Serverは文字列をフィルタリングしますが空の文字列は残します

「ゴミ箱」カテゴリを除外して空のものも含めて残していますが、フィルタを適用すると空のものも消えています... これは普通ですか? 「ゴミ箱」を除外して空の値を含む他のすべてを残すにはどうすればいいですか?

私はこのようWHERE句を使用しています:

WHERE 
    table.month = 8 AND table.category <> 'trash' 
+3

あなたのデータを私たちに教えてください。消滅したアイテムには 'NULL'値があると思います。 –

+0

'category <> 'trash''を持つ' month = 8'の項目がありますか? –

+2

@ThorstenDittmarいいえ、SQL Serverでは表示されていません。 https://data.stackexchange.com/stackoverflow/query/523606 –

答えて

4

は、おそらくあなたはcategoryNULLのエントリを持っています。したがって、定義によって比較null <> 'trash'trueでもfalseでもなく、WHERE句はすべての条件がtrueであるレコードのみを返すため、返されません。

あなたはこれまで、あなたのステートメントを変更できます。これは、前者は、あなたが欲しいものを返す必要があり、空の文字列、とnull値を置き換え

WHERE table.month = 8 AND (table.category is null OR table.category <> 'trash') 

WHERE table.month = 8 AND ISNULL(table.category, '') <> 'trash' 

またはこれ。

+0

ありがとう、最初の声明は完璧に働いた。私はNULLがこれのように振る舞うだろうということを知らなかった。ありがとうございました – ricardomadaleno

関連する問題