SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Wie SQLite Ifnull() funktioniert

Das SQLite ifnull() Mit der Funktion können Sie NULL-Werte durch einen anderen Wert ersetzen.

Es nimmt zwei Argumente entgegen und gibt eine Kopie seines ersten Nicht-NULL-Arguments oder NULL zurück, wenn beide Argumente NULL sind.

Der ifnull() Funktion entspricht coalesce() mit zwei Argumenten.

Einfaches Beispiel

Hier ist ein einfaches Beispiel, um das Konzept zu demonstrieren.

SELECT 
  ifnull(123, 0),
  ifnull(NULL, 0);

Ergebnis:

ifnull(123, 0)  ifnull(NULL, 0)
--------------  ---------------
123             0              

Die zweite Spalte war NULL und somit 0 wurde stattdessen zurückgegeben.

Datenbankbeispiel

Dieses Beispiel verwendet ifnull() in einer Datenbankabfrage. Dies zeigt, wie ifnull() kann nützlich sein, wenn Daten abgefragt werden, die NULL-Werte enthalten können.

Nehmen Sie die folgende Tabelle als Beispiel:

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                

Die meisten Produkte wurden mit Preisen ausgefüllt, aber der Preis für Freibier ist NULL.

Wir können dies auf einen Wert unserer Wahl ändern.

SELECT 
  ProductName,
  ifnull(Price, 0.0)
FROM Products;

Ergebnis:

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               

Jetzt hat es den gleichen Preis wie die anderen kostenlosen Produkte.

Der Wiederbeschaffungswert muss nicht unbedingt eine Zahl sein. Sie können es auch durch eine Zeichenfolge ersetzen.

SELECT 
  ProductName,
  ifnull(Price, 'FREE!')
FROM Products;

Ergebnis:

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!                 

Wenn beide Argumente NULL sind

Wenn beide Argumente NULL sind, wird NULL zurückgegeben.

SELECT ifnull(NULL, NULL);

Ergebnis:

ifnull(NULL, NULL)
------------------