Dans MariaDB, le IFNULL()
La fonction nous permet de remplacer les valeurs NULL par une autre valeur.
Syntaxe
IFNULL(expr1,expr2)
Si expr1
n'est pas NULL
, IFNULL()
renvoie expr1
; sinon il renvoie expr2
.
Aussi, à partir de MariaDB 10.3, NVL()
peut être utilisé comme alias pour le IFNULL()
une fonction. Par conséquent, nous avons la possibilité d'utiliser la syntaxe suivante à la place :
NVL(expr1,expr2)
Le résultat est le même quelle que soit la syntaxe utilisée.
Exemple
Voici un exemple de base qui utilise le NULL
constante :
SELECT IFNULL( null, 'No Value' );
Résultat :
No Value
Dans ce cas, j'ai utilisé IFNULL()
pour remplacer la valeur NULL par No Value
.
Voici ce qui se passe lorsque le premier argument n'est pas NULL
:
SELECT IFNULL( 'Spicy', 'No Value' );
Résultat :
Spicy
Dans ce cas, le premier argument est renvoyé, car il n'est pas NULL
.
Exemple de base de données
Supposons que nous lancions la requête suivante :
SELECT * FROM Employees;
Résultat :
empId name dept ----- ----- ----- 1 Jess Sales 2 Rohit NULL 3 Zohan Sales 4 Homer NULL
Nous pouvons voir que deux lignes ont des valeurs NULL dans le dept
colonne.
Dans la requête suivante, nous utilisons IFNULL()
pour remplacer les valeurs NULL par une valeur plus significative pour le lecteur :
SELECT
empId,
name,
IFNULL( dept, 'Not yet assigned' ) AS dept
FROM Employees;
Résultat :
empId name dept ----- ----- ---------------- 1 Jess Sales 2 Rohit Not yet assigned 3 Zohan Sales 4 Homer Not yet assigned
Expressions
La valeur actuelle du premier argument est évaluée. Par conséquent, si nous fournissons une expression comme celle-ci :
SELECT IFNULL( 3 * 7, 0 );
Nous obtenons ceci :
21
Donc, nous n'obtenons pas le 3 * 7
partie. Nous obtenons le résultat de cette expression (qui dans ce cas est 21
).
Il en va de même lorsque le résultat de l'expression est NULL
. Par exemple, si nous exécutons le code suivant :
SELECT IFNULL( 3 / 0, 0 );
Nous obtenons ceci :
0.0000
Cependant, c'est un exemple dangereux. Zéro est une valeur. NULL
n'est pas.
Retourner zéro lorsqu'il y a une valeur NULL peut être trompeur ou même complètement faux. Imaginez si nous avions affaire à des prix. Nous pourrions nous retrouver avec un prix de zéro, ce qui pourrait être incorrect et coûter très cher à l'entreprise.
Par conséquent, dans de tels cas, il est généralement préférable d'utiliser une valeur plus significative qui indique au lecteur qu'il n'y a pas de valeur.
Exemple :
SELECT IFNULL( 3 / 0, 'No value' );
Résultat :
No Value
Le NVL()
Fonction
À partir de MariaDB 10.3, NVL()
est un alias pour IFNULL()
. Par conséquent, nous pouvons remplacer IFNULL()
avec NVL()
dans l'un des exemples ci-dessus.
Exemple :
SELECT NVL( 3 / 0, 'No value' );
Résultat :
No Value