Database
 sql >> Base de données >  >> RDS >> Database

Gérer efficacement les valeurs NULL avec la fonction SQL COALESCE pour les débutants

Cet article vise à aider les débutants à comprendre les bases de la fonction T-SQL COALESCE et son application pour la gestion des valeurs NULL. De plus, les lecteurs acquerront une expérience pratique en implémentant quelques exemples simples de cette fonction.

Nous soulignerons également l'importance des fonctions T-SQL dans la résolution des problèmes d'analyse de base de données.

À propos de la fonction SQL COALESCE

Essayons d'abord de comprendre cette fonction du point de vue d'un débutant en SQL.

Qu'est-ce que la fonction SQL COALESCE ?

C'est une fonction T-SQL qui accepte de nombreuses entrées mais renvoie la première valeur d'entrée qui n'est PAS NULL .

Quelle est l'entrée ?

Une entrée (également appelée argument) peut être tout ce qui est fourni à une fonction requise par cette fonction pour faire son travail.

par exemple, nous avons une fonction appelée SUM() , qui additionne deux nombres quelconques X et O . Ces nombres sont des entrées ou des arguments de la fonction.

Une entrée ou un argument peut être une expression.

Qu'est-ce qu'une expression ?

Une expression peut être une constante, une variable ou une colonne qui renvoie finalement une seule valeur de données.

Cependant, nous nous concentrons particulièrement sur les colonnes du point de vue de la base de données, qui peuvent ou non contenir des valeurs.

Qu'est-ce qu'une valeur nulle ?

Toute valeur qui n'a pas encore été attribuée à la colonne d'une table est un NULL valeur. En d'autres termes, NULL signifie une valeur non initialisée d'une colonne de la table .

Qu'est-ce qu'une valeur NOT NULL ?

C'est l'opposé de la valeur NULL. Si la valeur NULL est une valeur de colonne non affectée ou non initialisée, la valeur NOT NULL est une valeur de colonne affectée ou initialisée .

par exemple, Nous avons deux colonnes, ExamId et ExamResult , dans un tableau.

Un utilisateur définit ExamId=1 , mais ne fournit aucune valeur au ExamResult colonne. Puis ExamResult aura NULL dedans. Sinon, ExamId a NOT NULL valeur car c'est 1.

Comment fonctionne la fonction COALESCE ?

C'est une fonction qui affiche la première valeur NOT NULL de la colonne dans la liste des colonnes passées à cette fonction. Cependant, nous pouvons passer n'importe quel ensemble d'expressions, qui peut être une liste des colonnes de la table ou un simple ensemble de nombres (constantes) ou de variables à cette fonction.

Syntaxe

La syntaxe SQL de la fonction COALESCE (selon la documentation Microsoft) est la suivante :

COALESCE ( expression [ ,...n ] )   

Nous avons déjà défini une expression afin qu'elle puisse accepter n'importe quel nombre d'expressions du même type.

Compatibilité

Selon la documentation de Microsoft, cette fonction est compatible avec de nombreuses technologies Microsoft SQL, notamment :

  1. Toutes les versions prises en charge de SQL Server
  2. Base de données SQL Azure (version cloud SQL Server).

Notez que j'ai délibérément exclu quelques autres technologies SQL Server pour garder le contexte simple.

Exemples simples de la fonction COALESCE

Configurons un exemple de base de données où nous pouvons exécuter nos exemples. Créez une nouvelle base de données appelée "CoalesceDB" pour y exécuter vos exemples. Utilisez le code suivant :

-- Create sample database
Create DATABASE CoalesceDB;
GO

Exemple "Nombre avec un NULL"

Si nous transmettons un nombre et une valeur NULL à la fonction COALESCE dans n'importe quel ordre, elle renverra le nombre car il s'agit de la première valeur NOT NULL .

Utilisez le script T-SQL sur l'exemple de base de données comme suit :

-- Use the sample database
USE CoalesceDB

-- Simple COALESCE example with number and NULL inputs (arguments) 
SELECT COALESCE(NULL,1) as COALESCE_Result

Vous devriez obtenir les résultats suivants :

Si nous inversons l'ordre des arguments de manière à ce que le numéro 1 vienne en premier et que NULL devienne le deuxième argument, nous obtenons toujours le même résultat :

-- Simple COALESCE example with Number and NULL while number being first input (arguments) 
SELECT COALESCE(1,NULL) as COALESCE_Result_Number_First

Exemple "Chaîne avec un NULL"

Ici, nous allons passer une chaîne (données de type caractère) et un NULL à cette fonction pour voir les résultats. Exécutez le script suivant :

-- Simple COALESCE example with string and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Second input') as COALESCE_Result

Les résultats sont ci-dessous :

De même, l'inversion de la commande nous donnera les mêmes résultats que dans l'exemple précédent.

Exemple "Deux nombres et un NULL"

Voyons le comportement de la fonction COALESCE si nous fournissons les trois entrées (arguments), dont deux nombres et une valeur NULL, à cette fonction.

Exécutez le script suivant pour l'exemple avec deux nombres et une valeur NULL :

-- Simple COALESCE example with two numbers and NULL inputs (arguments) 
SELECT COALESCE(NULL,2,3) as COALESCE_Result

Le résultat est le suivant :

Depuis le premier PAS La valeur nulle est 2 , la fonction COALESCE l'a renvoyée, en ignorant la valeur qui la suit.

Inversons maintenant l'ordre des numéros dans la liste des arguments avec le script suivant :

-- Simple COALESCE example with two numbers reversed and NULL inputs (arguments) 
SELECT COALESCE(NULL,3,2) as COALESCE_Result 

Le jeu de résultats est ci-dessous :

Exemple "Nombre, Chaîne et NULL"

Ici, nous mélangeons les types d'arguments en saisissant un nombre, une chaîne et une valeur NULL. Saisissez le code suivant :

-- Simple COALESCE example with one number one string and NULL inputs (arguments) 
SELECT COALESCE(NULL,1,'Home') as COALESCE_Result

Les résultats sont les suivants :

Bien que la fonction COALESCE affiche les résultats corrects, en sélectionnant la première valeur NOT NULL, qui est 1, ce n'est pas un bon exemple. Nous devrions fournir le même type d'arguments. Il s'agit soit de chiffres, soit de caractères, soit de tout autre type d'expression.

Si nous fournissons la chaîne 'Home' comme premier argument et le nombre 1 comme deuxième argument, cela provoquera une erreur. C'est pourquoi les expressions doivent être du même type.

Essayons ceci en interchangeant les deux arguments NOT NULL :

-- Simple COALESCE example with one number one string first and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Home',1) as COALESCE_Result

La sortie est ci-dessous :

Exemple "Deux chaînes avec un NULL"

Si nous entrons une valeur NULL suivie de deux valeurs de chaîne, il renverra la première chaîne car elle n'est PAS NULL. Il laissera le deuxième de côté. Exécutez le script suivant pour le voir en action :

-- Simple COALESCE example with two strings and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Home','Office') as COALESCE_Result

Le jeu de résultats est ci-dessous :

L'exemple ci-dessus prouve que des résultats précis nécessitent de fournir le même type d'arguments à la fonction COALESCE. Un argument lui-même peut être un nombre, une chaîne, une variable ou une colonne du tableau.

Exemples de cas réels

Prenons maintenant un scénario simple et réel de la fonction COALESCE gérant efficacement les valeurs NULL.

Une société de services informatiques stocke les coordonnées de ses clients, classées dans les deux catégories suivantes :

  1. Clients professionnels.
  2. Clients individuels.

Un client professionnel est un client représentant une entreprise. Ils passent des commandes au nom de la société (entreprise). Un client particulier est une personne qui commande des services à titre personnel et pour un usage personnel.

Les contacts des clients professionnels se trouvent dans la table Customer sous la colonne Work_Email. Les adresses e-mail des clients personnels se trouvent dans la colonne Personal_Email du tableau.

Par conséquent, il remplit la colonne Work_Email ou Personal_Email pour chaque client, selon le type.

Créer le tableau des clients

Nous allons créer une table appelée "Customer" dans l'exemple de base de données CoalesceDB. Tapez le script suivant :

-- Using the sample database
Use CoalesceDB

-- Create Customer table
CREATE TABLE Customer
(CustomerId INT IDENTITY(1,1),
Work_Email VARCHAR(250) NULL,
Personal_Email VARCHAR(250) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY ([CustomerId]) 
)

Remplir le tableau des clients

Remplissons la table des clients à l'aide du script suivant :

-- Using the sample database
Use CoalesceDB

-- Populate Customer table
INSERT INTO Customer
(Work_Email,Personal_Email)
values
('[email protected]',NULL),
(NULL,'[email protected]'),
(NULL,'[email protected]'),
('[email protected]',NULL),
('[email protected]',NULL),
(NULL,'[email protected]')

-- Important: Please note the above email addresses are for demo purposes only

Afficher le tableau des clients

Exécutez le script suivant :

-- View customer table
SELECT [CustomerId], [Work_Email], [Personal_Email] FROM dbo.Customer

Le résultat est le suivant :

Affichage de tous les contacts disponibles à l'aide de COALESCE

Maintenant, si nous souhaitons voir tous les contacts disponibles de tous les clients, en ignorant les NULL, nous pouvons y parvenir en utilisant la fonction COALESCE comme suit :

--Viewing all available contacts using COALESCE 
SELECT C.CustomerId,COALESCE(Work_Email,Personal_Email) AS Email
FROM dbo.Customer C

Les résultats sont :

Choses à faire

Toutes nos félicitations! Vous avez les bases de la fonction COALESCE et comprenez son utilisation pour gérer efficacement les valeurs NULL.

Maintenant, vous voudrez peut-être perfectionner les nouvelles compétences :

  1. Essayez de créer et de remplir deux autres colonnes, Work_Phone et Personal_Phone, dans la table Customer. Voyez si vous pouvez gérer les valeurs NULL dans ces colonnes en utilisant l'exemple de cas réel.
  2. Essayez de créer une vue SQL pour afficher tous les contacts de messagerie disponibles des clients.
  3. Essayez de transmettre les quatre colonnes (Work_Email, Personal_Email, Work_Phone et Personal_Phone) dans la fonction. Bien sûr, vous devez vous assurer qu'ils ont tous le même type de données. Voyez vous-même les résultats.

Lire aussi

Une utilisation pratique de la fonction SQL COALESCE

Principales réponses aux 5 questions brûlantes sur la fonction SQL COALESCE