Il s'agit d'une fonction intégrée à SQL Server. Il permet à l'utilisateur de remplacer les valeurs NULL avec une valeur de remplacement donnée. Cet article donne une présentation complète de la fonction ISNULL pour renvoyer une valeur alternative si l'expression ou les enregistrements de table ont des valeurs NULL.
Syntaxe
Voici une syntaxe qui illustre la fonction ISNULL :
ISNULL ( Expression, Replacement )
Comme on peut le voir, cette syntaxe n'accepte que deux arguments :
Si l'expression est évaluée à NULL, cette fonction remplace la valeur NULL par la valeur de remplacement. Quand l'argument est les types de données sont différents , le serveur SQL transforme implicitement le type de données valeur de remplacement en type de données expression avant de renvoyer une valeur. Nous obtiendrons la valeur de l’expression lorsque l’expression n’est pas NULL.
La fonction ISNULL peut fonctionner dans SQL Server (à partir de 2008), Parallel Data Warehouse, Azure SQL Database et Azure SQL Data Warehouse.
Exemple de fonction ISNULL
Explorons la fonction ISNULL avec quelques exemples dans SQL Server.
1. Fonction ISNULL avec la valeur numérique
L'exemple ci-dessous utilise la fonction ISNULL. Ici, le premier argument est NULL ; par conséquent, il renvoie la valeur d'un deuxième argument dans un résultat :
SELECT ISNULL(NULL, 25) AS Result;
Après exécution, nous obtiendrons le résultat ci-dessous :
2. Fonction ISNULL avec données de chaîne de caractères
L'exemple ci-dessous utilise la fonction ISNULL. Ici, nous obtiendrons la valeur de la chaîne 'Bonjour' parce que c'est le premier argument. Depuis la définition de la fonction ISNULL(), elle renvoie la valeur du premier argument lorsqu'elle est NON NULL :
SELECT ISNULL('Hello', 'Javatpoint') AS Result;
Après exécution, nous obtiendrons le résultat ci-dessous :
3. Fonction ISNULL avec variables
L'exemple ci-dessous utilise la fonction ISNULL et renvoie le résultat à l'aide d'une variable :
DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result;
Après exécution, nous obtiendrons le résultat ci-dessous :
4. Fonction ISNULL sur la table
Ici, nous allons voir comment remplacer une valeur de colonne par une valeur significative lorsqu'elle contient des valeurs nulles. Créons d'abord une table nommée ' Employé' en utilisant la déclaration ci-dessous :
CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL );
Maintenant, nous allons insérer quelques valeurs dans ce tableau en utilisant l'instruction ci-dessous :
INSERT INTO Employee (Emp_Name, Age, Salary) VALUES ('Kevin Huges', 28, 45000), ('Rose Bennet', NULL, 36000), ('Peter Butler', 25, NULL);
Quand on vérifie le tableau, on voit que les employés 2 et 3 ont un NULL valeur.
Supposons que nous souhaitions remplacer les valeurs NULL de ces colonnes sans les mettre à jour définitivement dans le tableau. Dans ce cas, nous pouvons utiliser la fonction ISNULL pour remplacer les valeurs NULL par la valeur spécifique.
Par exemple , nous voulons retourner le âge et salaire de l'employé avec respectivement 22 et 25 000, si leurs colonnes ont des valeurs NULL dans la table Employee. Nous pouvons le faire en utilisant l'instruction suivante :
SELECT ID, Emp_Name, ISNULL(Age, 22) AS Age, ISNULL(Salary, 25000) AS Salary FROM Employee;
Après exécution, nous obtiendrons le résultat ci-dessous :
Si nous exécutons la requête avec la fonction ISNULL pour la colonne où aucune colonne n'a de valeurs NULL dans la table, cette requête renverra les valeurs réelles des lignes.
10 à la puissance 6
Par exemple , nous avons mis à jour le salaire de l'employé dont ID=2 comme suit:
UPDATE Employee SET Salary = 65000 WHERE ID=2;
Encore une fois, si nous exécutons la fonction ISNULL, cela ne change pas la colonne salaire. Voir la sortie ci-dessous :
5. ISNULL avec fonctions d'agrégation
SQL Server nous permet également d'utiliser les fonctions d'agrégation telles que SUM, AVG avec la fonction ISNULL. Supposons que nous ayons besoin d'obtenir le somme d'un salaire colonne présente dans la table Employé, et si une colonne de salaire a NULL, elle sera remplacée par 25000 avant d'ajouter les salaires.
Avant d'effectuer les méthodes d'agrégation, nous mettrons à jour le salaire de l'employé avec NULL dont l'identifiant est 2, à l'aide de la requête ci-dessous.
UPDATE Employee SET Salary = NULL WHERE ID=2;
L'exemple ci-dessous remplace d'abord la valeur NULL par 25 000, puis exécute la fonction SUM dessus. Voir la sortie ci-dessous :
SELECT SUM(ISNULL(Salary, 25000)) AS Sum_of_Salaries FROM Employee;
Après exécution, nous obtiendrons le résultat ci-dessous :
De même, la fonction ISNULL peut être utilisée pour remplacer les valeurs NULL puis renvoyer la valeur moyenne avec Fonction AVG() . Voir la déclaration ci-dessous :
SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee;
Après exécution, nous obtiendrons le résultat ci-dessous :
Différence entre SQL Server ISNULL et IS NULL
Les fonctions ISNULL et IS NULL sont toutes deux différentes dans SQL Server. Nous utilisons la fonction ISNULL lorsque nous avons besoin de remplacer les valeurs NULL avec une valeur spécifiée. Par contre, on utilise la fonction IS NULL quand on veut identifier les valeurs NULL dans un tableau.
Voyons l'exemple ci-dessous pour illustrer leurs différences .
Supposons que nous souhaitions obtenir les données des employés du ' Employé' table qui contient des valeurs NULL dans la colonne Salaire. Pour obtenir ce type d'informations, nous devons utiliser la fonction IS NULL dans le OÙ clause comme suit :
SELECT * FROM Employee WHERE Salary IS NULL;
Il renverra les détails de l'employé dont le salaire est NULL :
Maintenant, si nous essayons d'obtenir ce type d'informations avec la fonction ISNULL, SQL Server via ce qui suit erreur :
SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0;
Voici l'erreur :
Ainsi, il est clair que SQL Server ne nous permet pas d'utiliser ISNULL pour rechercher des valeurs NULL.