SQLite ifnull()
funktionen låter dig ersätta NULL-värden med ett annat värde.
Den tar två argument och den returnerar en kopia av dess första icke-NULL-argument, eller NULL om båda argumenten är NULL.
ifnull()
funktion är ekvivalent med coalesce()
med två argument.
Enkelt exempel
Här är ett enkelt exempel för att demonstrera konceptet.
SELECT
ifnull(123, 0),
ifnull(NULL, 0);
Resultat:
ifnull(123, 0) ifnull(NULL, 0) -------------- --------------- 123 0
Den andra kolumnen var NULL och så 0 returnerades istället.
Databasexempel
Det här exemplet använder ifnull()
i en databasfråga. Detta visar hur ifnull()
kan vara användbart när du söker efter data som kan innehålla NULL-värden.
Ta följande tabell som ett exempel:
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 flesta produkter har fyllts i med priser, men priset på Gratis öl är NULL.
Vi kan ändra detta till ett värde som vi väljer.
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 samma pris som de andra gratisprodukterna.
Ersättningsvärdet behöver inte nödvändigtvis vara ett tal. Du kan också ersätta den med en sträng.
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 båda argumenten är NULL
Om båda argumenten är NULL, returneras NULL.
SELECT ifnull(NULL, NULL);
Resultat:
ifnull(NULL, NULL) ------------------