2016-07-28 12 views
0
gefüllt ist

Ich habe checking if a row merely exists Fragen gesehen, aber ich habe nichts (auf SO oder anderswo) zu sehen, ob oder nicht all die Daten in gefülltPostgreSQL - überprüfen, ob eine Zeile vollständig in

.

Ich hatte gehofft, dass SELECT true FROM myTable WHERE name='myRow' AND * IS NOT NULL; würde funktionieren, aber es nicht.

Welcher Platzhalter wird anstelle des Sterns funktionieren, wenn es einen gibt? Muss ich jeden Spaltennamen einzeln in die Abfrage eingeben?

Antwort

3

Sie können in der Tat die ganze Reihe verweisen, aber nicht * verwenden, sondern durch den Tabellennamen verwenden:

SELECT true 
FROM myTable 
WHERE name='myRow' 
    AND myTable IS NOT NULL; 

Der IS NOT NULL Operator auf einem Zeilenwert liefert true, wenn alle Spalten der Zeile sind nicht Null.

Die folgende Anweisung:

with mytable (col1, col2, col3) as (
values 
    (1,null,null), 
    (null,1,null), 
    (null,null,1), 
    (1,1,1) 
) 
select * 
from mytable 
where mytable is not null; 

zurückkehren wird:

col1 | col2 | col3 
-----+------+----- 
    1 | 1 | 1 

Die btw Gegenteil. ist nicht wahr. where mytable is null wird nichts zurückgeben, da eine Zeile per Definition niemals null ist (weil sie dann nicht existieren würde). Um Zeilen zu finden, wo mindestens eine Spalte null ist müssen Sie where not (mytable is not null)

Ein ähnliches Problem zu verwenden, ist hier beschrieben: https://dba.stackexchange.com/q/143959/1822

+0

Thank you! Ihre Antwort war sehr informativ. –

Verwandte Themen