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

MySQL IFNULL() expliqué

MySQL a un IFNULL() fonction qui nous permet de remplacer facilement les valeurs NULL par une autre valeur.

Syntaxe

IFNULL(expr1,expr2)

Si expr1 n'est pas NULL , IFNULL() renvoie expr1 ; sinon il renvoie expr2 .

Exemple

Voici un exemple de base qui utilise le NULL constante :

SELECT IFNULL( null, 'n/a' );

Résultat :

n/a

Dans ce cas, j'ai utilisé IFNULL() pour remplacer la valeur NULL par la chaîne n/a .

Voici ce qui se passe lorsque le premier argument n'est pas NULL :

SELECT IFNULL( 'Cow', 'n/a' );

Résultat :

Cow

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
    PetName,
    DOB
FROM Pets;

Résultat :

+---------+------------+
| PetName | DOB        |
+---------+------------+
| Fluffy  | 2020-11-20 |
| Fetch   | 2019-08-16 |
| Scratch | 2018-10-01 |
| Wag     | 2020-03-15 |
| Tweet   | 2020-11-28 |
| Fluffy  | 2020-09-17 |
| Bark    | NULL       |
| Meow    | NULL       |
| Woof    | 2020-10-03 |
| Ears    | 2022-01-11 |
+---------+------------+

Nous pouvons voir que deux lignes ont des valeurs NULL dans la colonne DOB.

Dans la requête suivante, nous utilisons IFNULL() pour remplacer les valeurs NULL par une valeur plus significative pour le lecteur :

SELECT
    PetName,
    IFNULL( DOB, 'None supplied' )
FROM Pets;

Résultat :

+---------+--------------------------------+
| PetName | IFNULL( DOB, 'None supplied' ) |
+---------+--------------------------------+
| Fluffy  | 2020-11-20                     |
| Fetch   | 2019-08-16                     |
| Scratch | 2018-10-01                     |
| Wag     | 2020-03-15                     |
| Tweet   | 2020-11-28                     |
| Fluffy  | 2020-09-17                     |
| Bark    | None supplied                  |
| Meow    | None supplied                  |
| Woof    | 2020-10-03                     |
| Ears    | 2022-01-11                     |
+---------+--------------------------------+

Expressions

La valeur actuelle du premier argument est évaluée. Par conséquent, si nous fournissons une expression comme celle-ci :

SELECT IFNULL( 2 * 5, 0 );

Nous obtenons ceci :

10

Donc, nous n'obtenons pas le 2 * 5 partie. Nous obtenons le résultat de cette expression (qui dans ce cas est 10 ).

Il en va de même lorsque le résultat de l'expression est NULL :

SELECT IFNULL( 2 / 0, 0 );

Nous obtenons ceci :

0.0000

Il vaut la peine d'être prudent cependant. Zéro est une valeur. NULL n'est pas.

Dans l'exemple ci-dessus, j'ai renvoyé zéro lorsqu'il y avait une valeur NULL, mais cela pourrait être trompeur ou même complètement faux. Imaginez si nous divisons les prix et que le résultat était un prix de zéro. OK, si nous divisons un prix par zéro, il y a probablement autre chose qui ne va pas, mais je suis sûr que vous comprenez mon point.

Dans tous les 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( 2 / 0, 'No value' );

Résultat :

No value