Das SQLite nullif()
Funktion ist eine praktische Funktion, mit der Sie bestimmte Werte bei Bedarf als NULL behandeln können.
Es darf nicht mit ifnull()
verwechselt werden Funktion, die das Gegenteil bewirkt – ermöglicht es Ihnen, NULL-Werte als etwas anderes zu behandeln.
Das nullif()
Die Funktion akzeptiert zwei Argumente und gibt ihr erstes Argument zurück, wenn die Argumente unterschiedlich sind, und NULL, wenn die Argumente gleich sind.
Syntax
Die Syntax lautet wie folgt:
nullif(X,Y)
Die Funktion durchsucht ihre Argumente von links nach rechts nach einem Argument, das eine Sortierfunktion definiert, und verwendet diese Sortierfunktion für alle Zeichenfolgenvergleiche. Wenn keines der Argumente eine Sortierfunktion definiert, wird BINARY verwendet.
Beispiel
Hier ist ein einfaches Beispiel zur Veranschaulichung.
SELECT
nullif(123,0),
nullif(0,0),
nullif(123,123);
Ergebnis:
nullif(123,0) nullif(0,0) nullif(123,123) ------------- ----------- --------------- 123
In der ersten Spalte sind die beiden Werte unterschiedlich, daher wird der erste Wert zurückgegeben.
In der zweiten Spalte sind beide Werte gleich, also wird NULL zurückgegeben.
Das gleiche gilt für die dritte Spalte – beide Werte sind gleich, also wird NULL zurückgegeben.
Ein praktisches Beispiel
Hier ist ein Datenbankbeispiel, das eine praktischere Verwendung für nullif()
demonstriert Funktion.
Nehmen Sie die folgende Tabelle namens Produkte :
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Widget Stick 89.75 3 Foo Cap 11.99 4 Free Widget 0.0 5 Free Foobar 0.0 6 Free Beer
Wir können sehen, dass zwei Produkte einen Preis von Null haben. Ein anderes Produkt hat einen NULL-Preis.
Stellen Sie sich nun vor, wir möchten herausfinden, wie viele Produkte einen positiven Preis haben. Mit anderen Worten, wir möchten keine Produkte einschließen, die einen Preis oder Null (oder NULL für diese Angelegenheit) haben.
Dazu können wir nullif()
verwenden in Verbindung mit count()
Funktion.
SELECT count(nullif(Price, 0.00))
FROM Products;
Ergebnis:
3
Wir erhalten wie erwartet 3, also genau wie viele Zeilen einen positiven Wert im Preis haben Säule.
Das funktioniert, weil count()
Die Funktion zählt nur Nicht-NULL-Werte. Indem wir die Nullbeträge in NULL umwandeln, können wir diese Werte in unserer Berechnung ignorieren.
Hier wieder ohne nullif()
Funktion.
SELECT count(Price)
FROM Products;
Ergebnis:
5
In diesem Fall enthält es also die Nullbeträge und wir erhalten 5. Zeile 6 wird weiterhin ignoriert, da diese tatsächlich einen NULL-Wert enthält.