SQLite nullif()
funktion er en praktisk funktion, der giver dig mulighed for at behandle visse værdier som NULL, når det kræves.
Det må ikke forveksles med ifnull()
funktion, som gør det modsatte – giver dig mulighed for at behandle NULL-værdier som noget andet.
nullif()
funktion accepterer to argumenter og returnerer dets første argument, hvis argumenterne er forskellige, og NULL, hvis argumenterne er ens.
Syntaks
Syntaksen ser sådan ud:
nullif(X,Y)
Funktionen søger i sine argumenter fra venstre mod højre efter et argument, der definerer en sammenstillingsfunktion og bruger denne sammenstillingsfunktion til alle strengsammenligninger. Hvis ingen af argumenterne definerer en sammenstillingsfunktion, bruges BINÆR.
Eksempel
Her er et grundlæggende eksempel at demonstrere.
SELECT
nullif(123,0),
nullif(0,0),
nullif(123,123);
Resultat:
nullif(123,0) nullif(0,0) nullif(123,123) ------------- ----------- --------------- 123
I den første kolonne er de to værdier forskellige, så den første værdi returneres.
I den anden kolonne er begge værdier de samme, så NULL returneres.
Det samme gælder for den tredje kolonne – begge værdier er de samme, så NULL returneres.
Et praktisk eksempel
Her er et databaseeksempel, der viser en mere praktisk brug af nullif()
funktion.
Tag følgende tabel kaldet Produkter :
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
Vi kan se, at to produkter har en pris på nul. Et andet produkt har en NULL-pris.
Forestil dig nu, at vi vil finde ud af, hvor mange produkter der har en positiv pris. Med andre ord ønsker vi ikke at inkludere produkter, der har en pris eller nul (eller NULL for den sags skyld).
For at gøre dette kan vi bruge nullif()
i forbindelse med count()
funktion.
SELECT count(nullif(Price, 0.00))
FROM Products;
Resultat:
3
Vi får 3 som forventet, hvilket er præcis hvor mange rækker der har en positiv værdi i Pris kolonne.
Dette virker, fordi count()
funktion tæller kun ikke-NULL værdier. Ved at konvertere nul-beløbene til NULL, er vi i stand til at ignorere disse værdier i vores beregning.
Her er den igen uden nullif()
funktion.
SELECT count(Price)
FROM Products;
Resultat:
5
Så i dette tilfælde inkluderer den nul-beløbene, og vi får 5. Den ignorerer stadig række 6, fordi den faktisk har en NULL-værdi.