Dans le langage SQL la fonction ISNULL() peut s’avérer utile pour traiter des résultats qui possèdent des données nulles. Attention toutefois, cette fonction s’utilise différemment selon le système de gestion de base de données :
- MySQL : la fonction ISNULL() prend un seul paramètre et permet de vérifier si une données est nulle
- SQL Server : la fonction ISNULL() prend 2 paramètres et sert à afficher la valeur du 2ème paramètre si le premier paramètre est null. Cette même fonctionnalité peut être effectuée par d’autres systèmes de gestion de base de données d’une manière différente :
- MySQL : il faut utiliser la fonction IFNULL()
- PostgreSQL : il faut utiliser la fonction COALESCE()
- Oracle : il faut utiliser la fonction NVL()
Syntaxe
Fonction ISNULL() de MySQL
L’utilisation de la fonction SQL peut s’utiliser dans une requête SQL facilement. Les requête suivantes sont des exemples typique de l’utilisation de cette fonction et de la valeur qu’elle retourne selon les cas.
SELECT ISNULL(NULL); -- retourne 1 SELECT ISNULL(3*3); -- retourne 0 SELECT ISNULL(3/0); -- retourne 1
Fonction ISNULL() de SQL Server
La fonction ISNULL() de SQL Server s’utilise quant à elle grâce à 2 paramètres qui peuvent s’utiliser dans des requêtes SQL telles que celle ci-dessous :
SELECT ISNULL(1,0); -- le résultat sera : 1 SELECT ISNULL(NULL,10); -- le résultat sera : 10 SELECT ISNULL(1/0,10); -- le résultat sera : 10 SELECT ISNULL(1/0,'oui'); -- le résulta sera : 'oui'
Ces exemples démontre bien que si la première valeur est nulle, ce sera la valeur du 2ème paramètre qui sera utilisé.
Exemple
Pour illustrer la fonction ISNULL() nous pouvons imaginer une application qui contient un dictionnaire de mot associer à un compteur qui comptabilise le nombre d’apparition de chaque mot-clé.
Table “dictionnaire” :
id | mot | compteur |
---|---|---|
1 | pourquoi | 4 |
2 | comment | NULL |
3 | qui | NULL |
4 | quoi | 2 |
Fonction ISNULL() de MySQL
Imaginons que l’ont souhaite afficher uniquement les résultats où le compteur n’a pas compter le nombre d’apparition d’un mot, il serait possible d’utiliser la clause “IS NULL” mais il est aussi possible d’utiliser la fonction ISNULL() et de vérifier si le résultat est égal à 1.
SELECT * FROM dictionnaire WHERE ISNULL(compteur) = 1
Le résultat de cette requête SQL sera le tableau suivant :
id | mot | compteur |
---|---|---|
2 | comment | NULL |
3 | qui | NULL |
Dans ce résultat il est possible de voir clairement que seul les lignes où le compteur vaut NULL sont retournée.
Fonction ISNULL() de SQL Server
Supposons que l’ont souhaite afficher la valeur du compteur et remplacer la valeur NULL par zéro, il est possible d’utiliser la requête SQL suivante :
SELECT id, mot, compteur, ISNULL(compteur, 0) FROM dictionnaire
Le résultat de cette requête sera le suivant :
id | mot | compteur | IFNULL(compteur, 0) |
---|---|---|---|
1 | pourquoi | 4 | 4 |
2 | comment | NULL | 0 |
3 | qui | NULL | 0 |
4 | quoi | 2 | 2 |
Ces résultat démontre l’efficacité d’une telle fonction pour éviter d’obtenir des résultats NULL et ainsi s’assurer d’une potentielle compatibilité avec un système qui accepte uniquement des valeurs numériques.