SQLite ifnull()
funktionen giver dig mulighed for at erstatte NULL-værdier med en anden værdi.
Det kræver to argumenter, og det returnerer en kopi af dets første ikke-NULL-argument, eller NULL, hvis begge argumenter er NULL.
ifnull()
funktion svarer til coalesce()
med to argumenter.
Simpelt eksempel
Her er et simpelt eksempel til at demonstrere konceptet.
SELECT
ifnull(123, 0),
ifnull(NULL, 0);
Resultat:
ifnull(123, 0) ifnull(NULL, 0) -------------- --------------- 123 0
Den anden kolonne var NULL og så 0 blev returneret i stedet.
Databaseeksempel
Dette eksempel bruger ifnull()
i en databaseforespørgsel. Dette viser hvordan ifnull()
kan være nyttigt, når du forespørger data, der kan indeholde NULL-værdier.
Tag følgende tabel som et eksempel:
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
De fleste produkter er blevet udfyldt med priser, men prisen på Gratis øl er NULL.
Vi kan ændre dette til en værdi efter eget valg.
SELECT
ProductName,
ifnull(Price, 0.0)
FROM Products;
Resultat:
ProductName ifnull(Price, 0.0) ------------- ------------------ Widget Holder 139.5 Widget Stick 89.75 Foo Cap 11.99 Free Widget 0.0 Free Foobar 0.0 Free Beer 0.0
Nu har den samme pris som de andre gratis produkter.
Erstatningsværdien behøver ikke nødvendigvis at være et tal. Du kan også erstatte den med en streng.
SELECT
ProductName,
ifnull(Price, 'FREE!')
FROM Products;
Resultat:
ProductName ifnull(Price, 'FREE!') ------------- ---------------------- Widget Holder 139.5 Widget Stick 89.75 Foo Cap 11.99 Free Widget 0.0 Free Foobar 0.0 Free Beer FREE!
Når begge argumenter er NULL
Hvis begge argumenter er NULL, returneres NULL.
SELECT ifnull(NULL, NULL);
Resultat:
ifnull(NULL, NULL) ------------------