Published on

April 3, 2022

Comment gérer les valeurs NULL dans SQL Server en utilisant COALESCE

Lorsque vous travaillez avec SQL Server, vous rencontrerez souvent des situations où vous devez traiter des valeurs NULL. Bien qu’il soit impossible d’éliminer complètement les NULL, vous pouvez utiliser la fonction COALESCE pour les gérer efficacement.

COALESCE est un outil puissant dans SQL Server qui vous permet de travailler avec des valeurs NULL. Il prend une liste d’expressions en argument et renvoie la valeur de la première expression qui n’est pas NULL. Cela peut être extrêmement utile lorsque vous devez remplacer les valeurs NULL par des valeurs non NULL dans vos requêtes.

Jetons un coup d’œil à quelques exemples pour comprendre comment COALESCE fonctionne :

Exemple 1 : Gérer les valeurs NULL dans une instruction SELECT

Supposons que vous ayez une table appelée “Customer” avec une colonne appelée “Tier” qui autorise les valeurs NULL. Vous souhaitez récupérer le niveau pour chaque client, mais si le niveau est NULL, vous souhaitez afficher “NONE” à la place. Vous pouvez y parvenir en utilisant COALESCE :

SELECT [Name], COALESCE([Tier], 'NONE') AS [Tier]
FROM [dbo].[Customer]

Cette requête renverra le nom de chaque client ainsi que leur niveau. Si le niveau est NULL, il sera remplacé par “NONE”.

Exemple 2 : Concaténer des chaînes avec des valeurs NULL

La concaténation de chaînes peut produire des résultats inattendus lorsque l’une ou plusieurs des colonnes concaténées ont des valeurs NULL. Pour gérer cela, vous pouvez utiliser COALESCE pour remplacer les valeurs NULL par une chaîne vide :

SELECT [FirstName] + ' ' + COALESCE([MiddleName], '') + ' ' + [LastName] AS [FullName]
FROM [dbo].[Contact];

Dans cet exemple, la colonne du deuxième prénom autorise les valeurs NULL. En utilisant COALESCE, nous nous assurons que si le deuxième prénom est NULL, il sera remplacé par une chaîne vide, ce qui permet la concaténation correcte du nom complet.

Exemple 3 : Gérer les valeurs NULL dans une instruction UPDATE

Lors de la mise à jour des données dans une table, vous pouvez avoir besoin de gérer les valeurs NULL. Supposons que vous ayez une table appelée “Customer” avec des colonnes pour diverses dates d’activité récente. Vous souhaitez mettre à jour ces dates en fonction des dernières transactions. Vous pouvez utiliser COALESCE pour vérifier si la nouvelle valeur est NULL et mettre à jour la colonne uniquement si elle ne l’est pas :

;WITH CTE_ACTIVITY AS (
SELECT
   [CustomerKey]
  ,[ORDER] AS [LastOrderDate]
  ,[SEARCH] AS [LastWebSearchDate]
  ,[INQUIRY] AS [LastInquiryDate]
  ,[PAYMENT] AS [LastPaymentDate]
FROM (
  SELECT 
     [CustomerKey]
    ,[ActivityType]
    ,[ActivityDate]
  FROM [dbo].[CustomerLastActivity]
 ) a
 PIVOT (
  MAX([ActivityDate])
  FOR [ActivityType] IN (
     [ORDER]
   , [SEARCH]
   , [INQUIRY]
   , [PAYMENT]
  ) 
 ) pvt
)

UPDATE c
SET [LastOrderDate] = COALESCE(a.[LastOrderDate], c.[LastOrderDate])
, [LastWebSearchDate] = COALESCE(a.[LastWebSearchDate], c.[LastWebSearchDate])
, [LastInquiryDate] = COALESCE(a.[LastInquiryDate], c.[LastInquiryDate])
, [LastPaymentDate] = COALESCE(a.[LastPaymentDate], c.[LastPaymentDate])
FROM [dbo].[Customer] c
JOIN [CTE_ACTIVITY] a
	ON a.[CustomerKey] = c.[CustomerKey];

Dans cet exemple, nous utilisons COALESCE pour vérifier si la nouvelle date d’activité est NULL et mettre à jour la colonne correspondante dans la table “Customer” uniquement si elle n’est pas NULL. Cela garantit que nous ne remplaçons pas les valeurs non NULL existantes par des valeurs NULL.

Ce ne sont que quelques exemples de la façon dont vous pouvez utiliser COALESCE pour gérer les valeurs NULL dans SQL Server. En comprenant comment COALESCE fonctionne et en l’incorporant dans vos requêtes et mises à jour, vous pouvez traiter efficacement les valeurs NULL et éviter les problèmes potentiels.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.