Le SQLite ifnull()
permet de remplacer les valeurs NULL par une autre valeur.
Il prend deux arguments et renvoie une copie de son premier argument non NULL, ou NULL si les deux arguments sont NULL.
Le ifnull()
la fonction est équivalente à coalesce()
avec deux arguments.
Exemple simple
Voici un exemple simple pour illustrer le concept.
SELECT
ifnull(123, 0),
ifnull(NULL, 0);
Résultat :
ifnull(123, 0) ifnull(NULL, 0) -------------- --------------- 123 0
La deuxième colonne était NULL et donc 0 a été renvoyé à la place.
Exemple de base de données
Cet exemple utilise ifnull()
dans une requête de base de données. Cela montre comment ifnull()
peut être utile lors de l'interrogation de données pouvant contenir des valeurs NULL.
Prenons le tableau suivant comme exemple :
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
La plupart des produits ont été renseignés avec des prix, mais le prix de la bière gratuite est NULL.
Nous pouvons le remplacer par une valeur de notre choix.
SELECT
ProductName,
ifnull(Price, 0.0)
FROM Products;
Résultat :
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
Maintenant, il a le même prix que les autres produits gratuits.
La valeur de remplacement ne doit pas nécessairement être un nombre. Vous pouvez également le remplacer par une chaîne.
SELECT
ProductName,
ifnull(Price, 'FREE!')
FROM Products;
Résultat :
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!
Lorsque les deux arguments sont NULL
Si les deux arguments sont NULL, alors NULL est renvoyé.
SELECT ifnull(NULL, NULL);
Résultat :
ifnull(NULL, NULL) ------------------