Comment remplacer les valeurs NULL par 0 ou des nombres spécifiques dans SQL

Gérer correctement les valeurs NULL dans les opérations de base de données est crucial pour maintenir l’intégrité des données et garantir des résultats de requête précis. Les valeurs NULL indiquent l’absence de données et peuvent affecter les calculs et les agrégations. Dans cet article, nous expliquerons en détail comment remplacer les valeurs NULL par 0 ou des nombres spécifiques dans SQL, en utilisant des exemples concrets.

Sommaire

Bases des valeurs NULL

Les valeurs NULL dans une base de données signifient l’absence de données spécifiques. Cela signifie « aucune valeur » et est différent d’un 0 numérique ou d’une chaîne vide. Les valeurs NULL sont couramment utilisées dans les scénarios suivants :

  • Lorsqu’une valeur n’a pas encore été entrée
  • Lorsqu’une valeur correspondante n’existe pas
  • Lorsqu’une valeur est inconnue

Dans SQL, les comparaisons ou calculs impliquant des valeurs NULL nécessitent un traitement spécial. Par exemple, une simple comparaison d’égalité avec un signe égal (=) sur une colonne contenant des valeurs NULL ne fonctionnera pas comme prévu. Étant donné que les valeurs NULL sont considérées comme inconnues, elles sont jugées non égales à quoi que ce soit. Par conséquent, pour vérifier les valeurs NULL, utilisez IS NULL ou IS NOT NULL.

De plus, soyez prudent lorsque vous travaillez sur des colonnes contenant des valeurs NULL. Par exemple, lors de l’agrégation d’une colonne avec des valeurs NULL, ces valeurs NULL sont souvent ignorées, ce qui peut conduire à des résultats inattendus. Pour éviter cela, il est efficace de remplacer les valeurs NULL par 0 ou des nombres spécifiques. La section suivante explique comment procéder en détail.

Comment remplacer les valeurs NULL par 0

Pour remplacer les valeurs NULL par 0 dans SQL, il est courant d’utiliser la fonction COALESCE ou la fonction IFNULL. Ces fonctions renvoient la valeur spécifiée si une valeur NULL existe. Ce qui suit explique comment utiliser ces fonctions avec des exemples concrets.

Utilisation de la fonction COALESCE

La fonction COALESCE prend plusieurs arguments et renvoie le premier argument non NULL. Voici comment utiliser la fonction COALESCE pour remplacer les valeurs NULL par 0.

SELECT COALESCE(column_name, 0) AS new_column_name
FROM table_name;

Exemple

Par exemple, si la colonne revenue dans la table sales contient des valeurs NULL, la requête pour remplacer ces valeurs NULL par 0 est la suivante :

SELECT COALESCE(revenue, 0) AS revenue
FROM sales;

Utilisation de la fonction IFNULL

La fonction IFNULL est une fonction spécifique à MySQL qui renvoie une valeur spécifiée si une valeur NULL existe. Elle sert le même objectif que la fonction COALESCE mais ne prend que deux arguments.

SELECT IFNULL(column_name, 0) AS new_column_name
FROM table_name;

Exemple

Par exemple, si la colonne revenue dans la table sales contient des valeurs NULL, la requête pour remplacer ces valeurs NULL par 0 en utilisant la fonction IFNULL est la suivante :

SELECT IFNULL(revenue, 0) AS revenue
FROM sales;

En utilisant ces fonctions, vous pouvez remplacer les valeurs NULL par 0 et effectuer des calculs et des agrégations sans problème. La section suivante explique comment remplacer les valeurs NULL par des nombres spécifiques.

Comment remplacer les valeurs NULL par des nombres spécifiques

Pour remplacer les valeurs NULL par un nombre spécifique autre que 0, vous pouvez également utiliser la fonction COALESCE ou la fonction IFNULL. Cela vous permet de spécifier un nombre particulier pour gérer correctement les valeurs NULL.

Utilisation de la fonction COALESCE

La fonction COALESCE renvoie la première valeur non NULL parmi plusieurs arguments. Pour remplacer les valeurs NULL par un nombre spécifique, spécifiez ce nombre comme deuxième argument.

SELECT COALESCE(column_name, specific_value) AS new_column_name
FROM table_name;

Exemple

Par exemple, si la colonne bonus dans la table employee contient des valeurs NULL, la requête pour remplacer ces valeurs NULL par 500 est la suivante :

SELECT COALESCE(bonus, 500) AS bonus
FROM employee;

Utilisation de la fonction IFNULL

La fonction IFNULL est une fonction spécifique à MySQL qui remplace les valeurs NULL par un nombre spécifié et prend deux arguments. Spécifiez le nombre particulier comme deuxième argument.

SELECT IFNULL(column_name, specific_value) AS new_column_name
FROM table_name;

Exemple

Par exemple, si la colonne bonus dans la table employee contient des valeurs NULL, la requête pour remplacer ces valeurs NULL par 500 en utilisant la fonction IFNULL est la suivante :

SELECT IFNULL(bonus, 500) AS bonus
FROM employee;

Cela vous permet de remplacer les valeurs NULL par des nombres spécifiques, en maintenant la cohérence des données tout en effectuant les calculs et analyses nécessaires. La section suivante explique des méthodes de remplacement plus complexes en utilisant l’instruction CASE.

Méthodes de remplacement complexes utilisant l’instruction CASE

En utilisant l’instruction CASE, vous pouvez remplacer les valeurs NULL par des valeurs spécifiques en fonction de conditions. L’instruction CASE permet un traitement de remplacement plus flexible et complexe.

Structure de base de l’instruction CASE

La structure de base de l’instruction CASE est la suivante :

SELECT 
    CASE 
        WHEN condition THEN value
        ELSE alternative_value
    END AS new_column_name
FROM table_name;

Exemple

Par exemple, si la colonne discount dans la table sales contient des valeurs NULL, vous pouvez les remplacer en fonction des conditions suivantes :

  1. Remplacer discount par 100 s’il est NULL et que total_sales est supérieur ou égal à 1000
  2. Remplacer discount par 50 s’il est NULL et que total_sales est inférieur à 1000

La requête pour ce cas est la suivante :

SELECT 
    CASE 
        WHEN discount IS NULL AND total_sales >= 1000 THEN 100
        WHEN discount IS NULL AND total_sales < 1000 THEN 50
        ELSE discount
    END AS adjusted_discount
FROM sales;

Combiner les conditions pour le remplacement

Des conditions plus complexes peuvent également être combinées. Par exemple, si vous souhaitez remplacer la colonne bonus dans la table employee en fonction des conditions suivantes :

  1. Remplacer bonus par 1000 s’il est NULL et que performance_rating est de 5
  2. Remplacer bonus par 500 s’il est NULL et que performance_rating est compris entre 3 et 4
  3. Remplacer bonus par 200 s’il est NULL et que performance_rating est inférieur à 3

La requête pour ce cas est la suivante :

SELECT 
    CASE 
        WHEN bonus IS NULL AND performance_rating = 5 THEN 1000
        WHEN bonus IS NULL AND performance_rating BETWEEN 3 AND 4 THEN 500
        WHEN bonus IS NULL AND performance_rating < 3 THEN 200
        ELSE bonus
    END AS adjusted_bonus
FROM employee;

Comme on le voit, en utilisant l’instruction CASE, il est possible de remplacer de manière flexible les valeurs NULL en fonction de diverses conditions. La section suivante résume le contenu discuté jusqu’à présent.

Conclusion

Nous avons expliqué comment remplacer les valeurs NULL par 0 ou des nombres spécifiques dans SQL. Les valeurs NULL sont des indicateurs spéciaux d’ « absence » dans une base de données, et si elles ne sont pas traitées de manière appropriée, elles peuvent affecter les calculs et les résultats d’agrégation. En utilisant la fonction COALESCE ou la fonction IFNULL, vous pouvez facilement remplacer les valeurs NULL par 0 ou des nombres spécifiés. De plus, en utilisant l’instruction CASE, il est possible de remplacer les valeurs NULL en fonction de conditions plus complexes.

En utilisant ces méthodes, vous pouvez maintenir la cohérence des données et obtenir des résultats de requête précis. Utiliser efficacement ces techniques dans les opérations pratiques de base de données peut aider à améliorer la qualité des données et à augmenter la précision de vos analyses.

Sommaire