2016-08-23 6 views
0

Gibt es eine Möglichkeit, leere Zeilen in einer SQL-Anweisung zu vermeiden? Meine Ausgabe ist:SQL vermeiden leere Zeilen

a | b | c 
1  2  3 
4 
EMPTY EMPTY EMPTY 
5 

Aber ich will:

a | b | c 
1 2 3 
4 
5 
+2

'wo ein <>‚LEER‘&& b <> 'LEER' && c <> 'LEER'? oder Wasauchimmer? –

+1

Ist der Text leer oder null? Wenn null angibt 'where a ist nicht null und b ist nicht null und c ist nicht null ', aber um sicher zu sein, müssten wir Beispieldaten und erwartete Ergebnisse und Ihre aktuelle Abfrage sehen. Es mag weg sein, die Nullen/Leerstellen zu beseitigen, um etwas in der aktuellen Abfrage falsch zu machen. Wie ein äußerer Join und die Spalten ABC stammen von der Tabelle, die nur übereinstimmende Datensätze zurückgibt. vielleicht sollte stattdessen eine innere Verbindung verwendet werden? – xQbert

Antwort

1

Wenn der Wert leer ist, oder wenn es null sind zwei verschiedene Dinge ist so ich bin nicht sicher, was Sie suchen.

Wenn NULL

SELECT * FROM table WHERE a IS NOT NULL OR b IS NOT NULL OR c IS NOT NULL; 

Wenn leer

SELECT * FROM table WHERE a <> '' OR b <> '' OR c <> ''; 
+0

nehmen Sie diesen einen Schritt weiter und zeigen Sie, wie Sie ISNULL() oder COALESE() verwenden können, um gleichzeitig leer und null zu vergleichen. WO KOALESSE (a, '') <> '' UND .... – Matt

+0

Das wird nicht funktionieren ... Er will wo ORs nicht ANDs. – maplemale

+0

@maplemale Ich bin mit Duncan auf AND einverstanden. Aber duncan, ich lese deine Antwort nur noch einmal, ich muss ausblinken, warum benutzt du und ist NICHT null anstatt IS NULL? Das würde alles außer 1 fallen lassen. Ich denke, Sie wollten ein IS NULL UND B IST NULL und c IS NULL – Matt

2

Wenn Sie wirklich alle Spalten der Tabelle überprüfen möchten verwenden diese:

select * 
from the_table 
where not (the_table is null); 

Dies entfernt Alle Reihen waren alle colum ns sind null.

Wenn Sie nur eine Teilmenge der Spalten überprüfen (zB weil es eine erzeugte PK-Spalte, die Sie uns nicht zeigen), Verwendung:

select * 
from the_table 
where not ((a,b,c) is null); 
+0

Side Frage: Was mag der Optimierer mehr? Ein exklusiver AND-Operator mit NOT- oder inklusive OR-Operatoren? Oder macht es keinen Unterschied? Aus einer reinen Lesbarkeitsoption mag ich, dass die Antwort "where not" ((a, b, c) ist null) besser ist als die angenommene Antwort, nur vom Standpunkt der Lesbarkeit. Aber vielleicht ist es syntaktischer Zucker? – maplemale