SQLite ifnull()
funkce umožňuje nahradit hodnoty NULL jinou hodnotou.
Trvá dva argumenty a vrací kopii svého prvního argumentu, který není NULL, nebo NULL, pokud jsou oba argumenty NULL.
ifnull()
funkce je ekvivalentní funkci coalesce()
se dvěma argumenty.
Jednoduchý příklad
Zde je jednoduchý příklad pro demonstraci konceptu.
SELECT
ifnull(123, 0),
ifnull(NULL, 0);
Výsledek:
ifnull(123, 0) ifnull(NULL, 0) -------------- --------------- 123 0
Druhý sloupec byl NULL a tedy 0 místo toho bylo vráceno.
Příklad databáze
Tento příklad používá ifnull()
v databázovém dotazu. To ukazuje, jak ifnull()
může být užitečné při dotazování na data, která mohou obsahovat hodnoty NULL.
Vezměte si následující tabulku jako příklad:
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
U většiny produktů byly uvedeny ceny, ale cena Piva zdarma je NULL.
Můžeme to změnit na hodnotu dle našeho výběru.
SELECT
ProductName,
ifnull(Price, 0.0)
FROM Products;
Výsledek:
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
Nyní má stejnou cenu jako ostatní bezplatné produkty.
Náhradní hodnota nemusí být nutně číslo. Můžete jej také nahradit řetězcem.
SELECT
ProductName,
ifnull(Price, 'FREE!')
FROM Products;
Výsledek:
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!
Když jsou oba argumenty NULL
Pokud jsou oba argumenty NULL, je vrácena hodnota NULL.
SELECT ifnull(NULL, NULL);
Výsledek:
ifnull(NULL, NULL) ------------------