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

Comment fonctionne SQLite Nullif()

Le SQLite nullif() La fonction est une fonction pratique qui vous permet de traiter certaines valeurs comme NULL lorsque cela est nécessaire.

Il ne faut pas le confondre avec le ifnull() fonction, qui fait le contraire - vous permet de traiter les valeurs NULL comme autre chose.

Le nullif() La fonction accepte deux arguments et renvoie son premier argument si les arguments sont différents et NULL si les arguments sont identiques.

Syntaxe

La syntaxe ressemble à ceci :

nullif(X,Y)

La fonction recherche dans ses arguments de gauche à droite un argument qui définit une fonction de classement et utilise cette fonction de classement pour toutes les comparaisons de chaînes. Si aucun des arguments ne définit une fonction de classement, alors le BINARY est utilisé.

Exemple

Voici un exemple de base pour illustrer.

SELECT 
  nullif(123,0),
  nullif(0,0),
  nullif(123,123);

Résultat :

nullif(123,0)  nullif(0,0)  nullif(123,123)
-------------  -----------  ---------------
123                                        

Dans la première colonne, les deux valeurs sont différentes, c'est donc la première valeur qui est renvoyée.

Dans la deuxième colonne, les deux valeurs sont identiques, donc NULL est renvoyé.

Il en va de même pour la troisième colonne - les deux valeurs sont identiques, donc NULL est renvoyé.

Un exemple pratique

Voici un exemple de base de données qui démontre une utilisation plus pratique pour le nullif() fonction.

Prenez le tableau suivant intitulé Produits :

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                

Nous pouvons voir que deux produits ont un prix nul. Un autre produit a un prix NULL.

Maintenant, imaginons que nous voulions savoir combien de produits ont un prix positif. En d'autres termes, nous ne voulons pas inclure les produits qui ont un prix ou zéro (ou NULL d'ailleurs).

Pour ce faire, nous pouvons utiliser nullif() en conjonction avec le count() fonction.

SELECT count(nullif(Price, 0.00)) 
FROM Products;

Résultat :

3

Nous obtenons 3 comme prévu, ce qui correspond exactement au nombre de lignes ayant une valeur positive dans le Prix colonne.

Cela fonctionne parce que le count() la fonction ne compte que les valeurs non NULL. En convertissant les montants nuls en NULL, nous pouvons ignorer ces valeurs dans notre calcul.

Le revoilà sans le nullif() fonction.

SELECT count(Price) 
FROM Products;

Résultat :

5

Donc, dans ce cas, il inclut les montants nuls et nous obtenons 5. Il ignore toujours la ligne 6 car elle a en fait une valeur NULL.