2016-08-12 2 views
1

Ich habe eine Tabelle mit mit Details meiner Unternehmen Produkte, und eine der Spalten hat Kategorien für die Produkte, sondern auch leere Zeichenfolgen für Produkte, die noch nicht kategorisiert wurden.SQL Server filtert die Zeichenfolge aus, aber leere Strings

Ich versuche, die Kategorie "Müll" herauszufiltern und den Rest einschließlich der leeren zu lassen, aber wenn ich den Filter anwende, verschwinden auch die leeren ... ist das normal? Wie kann ich den "Müll" herausfiltern und alles andere einschließlich leerer Werte belassen?

Ich verwende eine WHERE Klausel wie folgt aus:

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

Zeigen Sie uns Ihre Daten. Ich vermute, die verschwundenen Gegenstände haben 'NULL' Werte. –

+0

Sind Sie sicher, dass es * Elemente für 'month = 8' gibt, die' category <> 'trash' haben? –

+2

@ThorstenDittmar Nein, nicht in SQL Server, wie Sie hier sehen können. https://data.stackexchange.com/stackoverflow/query/523606 –

Antwort

4

Wahrscheinlich haben Sie Einträge mit categoryNULL. Daher werden sie nicht zurückgegeben, da der Vergleich null <> 'trash' definitionsgemäß weder true noch false ist, aber eine WHERE-Klausel nur Datensätze zurückgibt, in denen alle Bedingungen true sind.

Sie könnten Ihre Aussage dazu ändern:

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

oder dies:

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

Dieser ehemalige ersetzt null Werte mit leeren Zeichenfolgen, die zurückkehren sollten, was Sie wollen.

+0

vielen Dank, die erste Aussage hat perfekt funktioniert. Ich hatte keine Ahnung, dass sich NULL so verhalten würden. Vielen Dank – ricardomadaleno

Verwandte Themen