NULLIF
NULLIF(expr1, expr2)
Si expr1 est égal à expr2, renvoie NULL, sinon expr1. Sert à transformer les valeurs « vides » en NULL.
Paramètres
- expr1, expr2 – les valeurs comparées.
Exemples
Les exemples avec les tables customers, products et orders utilisent la base de données d’exemple de la série Bases du SQL.
SELECT NULLIF('', '') AS empty_text, NULLIF('London', '') AS filled, 100 / NULLIF(0, 0) AS no_division_by_zero;
+------------+--------+---------------------+ | empty_text | filled | no_division_by_zero | +------------+--------+---------------------+ | NULL | London | NULL | +------------+--------+---------------------+
Le stock moyen sans les produits épuisés (AVG ignore NULL) :
SELECT AVG(stock) AS all_products, AVG(NULLIF(stock, 0)) AS without_sold_out FROM products;
+--------------+------------------+ | all_products | without_sold_out | +--------------+------------------+ | 30.3333 | 36.4000 | +--------------+------------------+
Points d’attention
- Compare selon les règles habituelles – dans une collation _ci, NULLIF('A', 'a') vaut NULL.
- Une division par NULL donne NULL, c’est pourquoi x / NULLIF(y, 0) est une division sûre, sans erreur ni avertissement.
Voir aussi :
IFNULL()
COALESCE()