Ich habe eine Spalte in einer Tabelle, die null oder leere Werte enthalten kann. Wie prüfe ich, ob eine Spalte in den Zeilen einer Tabelle leer oder ungültig ist?
(e.g. null or '' or ' ' or ' ' and ...)
Ich habe eine Spalte in einer Tabelle, die null oder leere Werte enthalten kann. Wie prüfe ich, ob eine Spalte in den Zeilen einer Tabelle leer oder ungültig ist?
(e.g. null or '' or ' ' or ' ' and ...)
Wie im SQL-92-Standard definiert, wird beim Vergleich zweier unterschiedlich breiter Zeichenketten der schmalere Wert mit Leerzeichen aufgefüllt, damit er die gleiche Breite wie der breitere Wert hat. Daher werden alle String-Werte, die ausschließlich aus Leerzeichen bestehen (einschließlich Null-Leerzeichen), als gleichwertig betrachtet, z. B.
'' = ' ' IS TRUE
'' = ' ' IS TRUE
' ' = ' ' IS TRUE
' ' = ' ' IS TRUE
etc
Daher sollte dies unabhängig davon funktionieren, wie viele Leerzeichen die some_col
Wert:
SELECT *
FROM T
WHERE some_col IS NULL
OR some_col = ' ';
oder knapper ausgedrückt:
SELECT *
FROM T
WHERE NULLIF(some_col, ' ') IS NULL;
Bitte beachten Sie: Das beste Verfahren steht am Ende der Antwort.
Sie können testen, ob eine Spalte null ist oder nicht null ist, indem Sie WHERE col IS NULL
o WHERE col IS NOT NULL
z.B..
SELECT myCol
FROM MyTable
WHERE MyCol IS NULL
In Ihrem Beispiel haben Sie verschiedene Permutationen von Leerraum. Sie können Leerraum entfernen mit TRIM
und Sie können COALESCE
um einen NULL-Wert vorzugeben (COALESCE gibt den ersten Nicht-Null-Wert der von Ihnen angegebenen Werte zurück.
z.B..
SELECT myCol
FROM MyTable
WHERE TRIM(COALESCE(MyCol, '')) = ''
Diese letzte Abfrage gibt Zeilen zurück, in denen MyCol
Null ist oder eine beliebige Länge von Leerzeichen hat.
Wenn Sie es vermeiden können, ist es besser, keine Funktion für eine Spalte in der WHERE-Klausel zu haben, da dies die Verwendung eines Indexes erschwert. Wenn Sie einfach nur prüfen wollen, ob eine Spalte leer ist, ist es vielleicht besser, dies zu tun:
SELECT myCol
FROM MyTable
WHERE MyCol IS NULL OR MyCol = ''
Véase TRIM COALESCE y IS NULL für weitere Informationen.
Auch Arbeiten mit Nullwerten aus den MySQL-Dokumenten
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.