SQLite ifnull()
funkcja umożliwia zastąpienie wartości NULL inną wartością.
Pobiera dwa argumenty i zwraca kopię swojego pierwszego argumentu innego niż NULL lub NULL, jeśli oba argumenty mają wartość NULL.
ifnull()
funkcja jest równoważna coalesce()
z dwoma argumentami.
Prosty przykład
Oto prosty przykład demonstrujący tę koncepcję.
SELECT
ifnull(123, 0),
ifnull(NULL, 0);
Wynik:
ifnull(123, 0) ifnull(NULL, 0) -------------- --------------- 123 0
Druga kolumna miała wartość NULL, więc 0 został zwrócony.
Przykład bazy danych
W tym przykładzie użyto ifnull()
w zapytaniu do bazy danych. To pokazuje, jak ifnull()
może być przydatne podczas zapytań o dane, które mogą zawierać wartości NULL.
Jako przykład weź poniższą tabelę:
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
Większość produktów została wypełniona cenami, ale cena Bezpłatnego piwa jest NULL.
Możemy to zmienić na wybraną przez nas wartość.
SELECT
ProductName,
ifnull(Price, 0.0)
FROM Products;
Wynik:
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
Teraz ma taką samą cenę jak inne bezpłatne produkty.
Wartość zastępcza niekoniecznie musi być liczbą. Możesz go również zastąpić ciągiem.
SELECT
ProductName,
ifnull(Price, 'FREE!')
FROM Products;
Wynik:
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!
Kiedy oba argumenty są NULL
Jeśli oba argumenty mają wartość NULL, zwracana jest wartość NULL.
SELECT ifnull(NULL, NULL);
Wynik:
ifnull(NULL, NULL) ------------------