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

Comment IFNULL() fonctionne dans MariaDB

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