SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment fonctionne SQLite Ifnull()

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)
------------------