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