Maison  >  Article  >  base de données  >  Quelles sont les différentes manières de remplacer les valeurs nulles à l'aide d'une instruction SELECT dans MySQL ?

Quelles sont les différentes manières de remplacer les valeurs nulles à l'aide d'une instruction SELECT dans MySQL ?

王林
王林avant
2023-09-07 11:13:10923parcourir

在 MySQL 中使用 SELECT 语句替换空值有哪些不同的方法?

Il existe de nombreuses options pour remplacer les valeurs NULL à l'aide d'instructions select. Vous pouvez utiliser l'instruction CASE ou IFNULL() ou COALESCE()

Cas 1 - Utiliser IFNULL()

IFNULL( la syntaxe) est la suivante -

SELECT IFNULL(yourColumnName,’yourValue’) AS anyVariableName from yourTableName;

Cas 2 - Utiliser COALESCE()

COALESCE( ) La syntaxe de est la suivante -

SELECT COALESCE(yourColumnName,’yourValue’) AS anyVariableName from yourTableName;

Cas 3 - Utiliser l'instruction CASE

La syntaxe de l'instruction CASE.

SELECT CASE
WHEN yourColumnName IS NULL THEN ‘yourValue’
ELSE yourColumnName END AS anyVariableName FROM yourTableName

Pour comprendre ce dont nous avons discuté ci-dessus, créons un tableau. La requête pour créer la table est la suivante -

mysql> create table ReplaceNULLDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(10),
   -> Marks int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.62 sec)

Utilisez la commande insert pour insérer des enregistrements dans la table. La requête est la suivante -

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Larry',90);
Query OK, 1 row affected (0.16 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Carol',NULL);
Query OK, 1 row affected (0.17 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('David',NULL);
Query OK, 1 row affected (0.14 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Bob',67);
Query OK, 1 row affected (0.17 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Sam',78);
Query OK, 1 row affected (0.19 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Mike',NULL);
Query OK, 1 row affected (0.19 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('John',98);
Query OK, 1 row affected (0.16 sec)

Utilisez l'instruction select pour afficher tous les enregistrements de la table. La requête est la suivante -

mysql> select *from ReplaceNULLDemo;

Ce qui suit est le résultat -

+----+-------+-------+
| Id | Name  | Marks |
+----+-------+-------+
|  1 | Larry |    90 |
|  2 | Carol |  NULL |
|  3 | David |  NULL |
|  4 | Bob   |    67 |
|  5 | Sam   |    78 |
|  6 | Mike  |  NULL |
|  7 | John  |    98 |
+----+-------+-------+
7 rows in set (0.00 sec)

Convertissons maintenant la valeur NULL en 0.

Cas 1 - Requête en utilisant IFNULL()

comme suit -

mysql> select ifnull(Marks,0) as ReplacementOfNULLWith0 from ReplaceNULLDemo;

Ci-dessous se trouve la sortie montrant NULL remplacé par 0 -

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
|                     90 |
|                      0 |
|                      0 |
|                     67 |
|                     78 |
|                      0 |
|                     98 |
+------------------------+
7 rows in set (0.00 sec)

Cas 2 - Requête comme suit en utilisant COALESCE()

-

mysql> select coalesce(Marks,0) as ReplacementOfNULLWith0 from ReplaceNULLDemo;

Ci-dessous se trouve le résultat montrant NULL remplacé par 0 -

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
| 90 |
| 0 |
| 0 |
| 67 |
| 78 |
| 0 |
| 98 |
+------------------------+
7 rows in set (0.00 sec)

Case 3 - en utilisant l'instruction CASE.

La requête est la suivante -

mysql> select case
   -> when Marks is null then 0
   -> else Marks end as ReplacementOfNULLWith0
   -> from ReplaceNULLDemo;

Ce qui suit est la sortie montrant NULL remplacé par 0 -

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
| 90                     |
| 0                      |
| 0                      |
| 67                     |
| 78                     |
| 0                      |
| 98                     |
+------------------------+
7 rows in set (0.00 sec)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer