Fonctions COALESCE et ISNULL dans SQL Server

SQL Server a introduit plusieurs méthodes pour gérer les valeurs NULL. Les fonctions les plus utilisées pour gérer les valeurs NULL sont COALESCE et ISNULL dans SQL Server. Ces fonctions permettent de rechercher des valeurs non NULL à partir d'une liste d'arguments. Dans cet article, nous verrons les utilisations des fonctions ISNULL et COALESCE et leurs différences avec des exemples.

Fonction COALESCE dans SQL Server

1. La fonction COALESCE dans le serveur SQL est utilisée pour renvoyer la première valeur Non NULL de la liste des colonnes / arguments donnée dans l’ordre.

2. COALESCE est considéré comme similaire à l'écriture d'une expression d'instruction CASE en SQL.

3. COALESCE est une fonction standard ANSI SQL. Il est disponible avec tous les principaux SGBDR, y compris Oracle et MySQL.

4. Syntaxe - COALESCE (expression [,… n])

Fonction ISNULL dans SQL Server

1. ISNULL est une fonction introduite spécialement dans T-SQL pour remplacer une valeur NULL par une valeur de remplacement spécifiée.

2. Syntaxe - ISNULL (expression_chèque, valeur de remplacement)

La différence entre ISNULL et COALESCE

1. ISNULL est une fonction. Par conséquent, il n'est évalué qu'une fois. COALESCE est une expression similaire à une instruction case. Il serait évalué plusieurs fois.

2. La fonction ISNULL est spécifique à Microsoft et a été introduite dans SQL Server. COALESCE est une fonction standard ANSI utilisée par tous les principaux SGBDR (par exemple, Oracle, MySQL).

3. Le type de données de retour pour une fonction ISNULL utilise le type de données du premier argument ou du second argument si le premier argument est NULL. Si les deux arguments sont NULL, un type de données INTEGER sera alors renvoyé. COALESCE, à la suite des règles d'instruction de casse, utilise le plus élevé du principal de priorité pour renvoyer le type de données. COALESCE renvoie une erreur si tous les paramètres d'entrée sont NULL.

4. ISNULL prend seulement deux paramètres. COALESCE prend un nombre variable de paramètres.

Exemples de fonctions COALESCE et ISNULL

Nous allons créer une table d'employés avec l'ID d'employé, le prénom, le prénom, le nom de famille, le numéro de contact et les colonnes de salaire.

À l'exception de la colonne Employee (Id), une colonne sur deux est considérée comme NULLable.

SI OBJECT_ID ('Employee') N'EST PAS NULL DROP TABLE Employee; CREATE TABLE Employé (Id INT NON NUL IDENTITÉ (1,1) PRIMARY KEY, Prénom VARCHAR (50) NULL, MiddleName VARCHAR (50) NULL, Nom VARCHAR (50) NULL, VARCHAR (50) NULL, MiddleName VARCHAR (50) NULL, Nom de famille VARCHAR (50) NULL, ContactNo VARCHAR (10) NULL, Salary INT NULL);

Insérer quelques enregistrements dans la table des employés

Insérer dans les valeurs de l'employé ('Vishwanath', NULL, NULL, '9999955555', 12000); Insérer dans les valeurs de l'employé (NULL, 'Niraj', NULL, '9911223344', 14000); Insérer dans les valeurs des employés (NULL, NULL, 'Chetan', NULL, NULL); Insérer dans les valeurs de l'employé ('Atul', 'K', NULL, '9876780987', NULL); Insérer dans les valeurs de l'employé ('Vishal', 'M', 'P', NULL, 12000); 

1. Utilisation de ISNULL - Affiche 'Non indiqué' si ContactNo est NULL dans la table employee

Les exemples suivants extraient les colonnes ID et ContactNo de la table employee. Si la colonne ContactNo est définie sur NULL, le numéro de contact indiqué dans le jeu de résultats est «Non indiqué», à l'aide de la fonction ISNULL pour tester les valeurs NULL dans la colonne ContactNo.

SELECT Id, ISNULL (ContactNo, 'Not Given') FROM Employee; 
Sortie - Ensemble de résultats Id ContactNo 1 9999955555 2 9911223344 3 Non renseigné 4 9876780987 5 Non renseigné 

2. Utilisation de ISNULL - Définition du salaire sur 0 si aucun salaire n'est fourni

Les exemples suivants extraient la colonne ID et salaire annuel (salaire mensuel * 12). Si Salary est NULL, remplacez-le par 0. Utilisez la fonction ISNULL pour tester les valeurs NULL dans la colonne salaire.

SELECT Id, ISNULL (Salary, 0) * 12 en tant que ContactNo FROM Employee; 
Sortie - Ensemble de résultats Id ContactNo 1 144000 2 168000 3 0 4 0 5 144000 

3. Utilisation de IS NULL - Recherche d’ID d’employés dont le numéro de contact est NULL

L'exemple suivant utilise IS NULL (espace entre IS et NULL) pour filtrer les enregistrements de la colonne Numéro de contact. Si le numéro de contact n'est pas fourni, cela signifie qu'ils ont des valeurs NULL.

SELECT Id, ContactNo as ContactNo DE Employé WHERE ContactNo IS NULL; 
Sortie - Jeu de résultats Id ContactNo 3 NULL 5 NULL 

4. Utilisation de IS NOT NULL - Recherche d’ID d’employés pour lesquels le salaire n’est PAS NULL

L'exemple suivant utilise IS NOT NULL pour filtrer les enregistrements de la colonne Salary où Salary est défini sur NULL, ou le salaire est présent.

SELECT Id, Salaire as ContactNo DE Employé O Salaire IS NOT NULL; 
Sortie - Jeu de résultats Id ContactNo 1 12000 2 14000 5 12000 

5. Utilisation de la fonction ISNULL avec AVG - Pour calculer le salaire moyen de tous les employés

L’exemple suivant trouve le salaire moyen de tous les employés, y compris ceux auxquels aucun salaire n’a été attribué (c’est-à-dire les valeurs NULL).

SELECT AVG (ISNULL (salaire, 0)) DE Employé; 
Sortie - Ensemble de résultats AvgEmpSal 7600 

6. Utiliser COALESCE - Obtenir la première valeur NOT NULL

L'exemple suivant utilise COALESCE pour renvoyer la première valeur Non NULL entre les colonnes prénom, deuxième prénom et nom de famille.

SELECT Id, COALESCE (Prénom, Prénom, Nom) comme FirstNotNullName FROM Employee; 
Sortie - Ensemble de résultats Id FirstNotNullName 1 Vishwanath 2 Niraj 3 Chetan 4 Atul 5 Vishal 

7. Utilisation de COALESCE - Obtenir la première valeur NOT NULL à partir d’arguments variables

L'exemple suivant renvoie la première valeur NOT NULL (c'est-à-dire 'Hi There').

Sélectionnez COALESCE (NULL, NULL, 'Salut', NULL, 'Salut là') comme FirstNotNullValue; 
Sortie - Jeu de résultats FirstNotNullValue Hi There 

8. Utiliser COALESCE - Passer toutes les valeurs NULL en tant qu'argument

Si nous transmettons tous les arguments en tant que NULL à une fonction COALESCE, une erreur sera générée, indiquant qu'au moins un argument ne doit pas être la constante null.

CHOISISSEZ LA COALESCE (NULL, NULL, NULL, NULL) comme FirstNotNullValue 

Message d'erreur
Msg 4127, Niveau 16, Etat 1, Ligne 22
Au moins un des arguments de COALESCE doit être une expression qui n'est pas la constante NULL.

En savoir plus sur la programmation de base de données et SQL de Tech-Recipes.