De SQLite nullif()
functie is een handige functie waarmee u bepaalde waarden indien nodig als NULL kunt behandelen.
Het moet niet worden verward met de ifnull()
functie, die het tegenovergestelde doet – stelt u in staat om NULL-waarden als iets anders te behandelen.
De nullif()
functie accepteert twee argumenten en retourneert het eerste argument als de argumenten verschillend zijn en NULL als de argumenten hetzelfde zijn.
Syntaxis
De syntaxis gaat als volgt:
nullif(X,Y)
De functie doorzoekt zijn argumenten van links naar rechts naar een argument dat een sorteerfunctie definieert en gebruikt die sorteerfunctie voor alle tekenreeksvergelijkingen. Als geen van beide argumenten een sorteerfunctie definieert, wordt BINARY gebruikt.
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren.
SELECT
nullif(123,0),
nullif(0,0),
nullif(123,123);
Resultaat:
nullif(123,0) nullif(0,0) nullif(123,123) ------------- ----------- --------------- 123
In de eerste kolom zijn de twee waarden verschillend, dus de eerste waarde wordt geretourneerd.
In de tweede kolom zijn beide waarden hetzelfde, dus NULL wordt geretourneerd.
Hetzelfde geldt voor de derde kolom – beide waarden zijn hetzelfde, dus NULL wordt geretourneerd.
Een praktisch voorbeeld
Hier is een databasevoorbeeld dat een meer praktisch gebruik voor de nullif()
laat zien functie.
Neem de volgende tabel genaamd Producten :
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
We kunnen zien dat twee producten een prijs van nul hebben. Een ander product heeft een NULL-prijs.
Stel je nu voor dat we willen weten hoeveel producten een positieve prijs hebben. Met andere woorden, we willen geen producten opnemen met een prijs of nul (of NULL wat dat betreft).
Om dit te doen, kunnen we nullif()
. gebruiken in combinatie met de count()
functie.
SELECT count(nullif(Price, 0.00))
FROM Products;
Resultaat:
3
We krijgen 3 zoals verwacht, wat precies is hoeveel rijen een positieve waarde hebben in de Prijs kolom.
Dit werkt omdat de count()
functie telt alleen niet-NULL-waarden. Door de nulbedragen naar NULL te converteren, kunnen we die waarden in onze berekening negeren.
Hier is het weer zonder de nullif()
functie.
SELECT count(Price)
FROM Products;
Resultaat:
5
Dus in dit geval bevat het de nulbedragen en krijgen we 5. Het negeert rij 6 nog steeds omdat dat eigenlijk een NULL-waarde heeft.