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

Comment utiliser Coalesce dans MySQL

Coalesce est une fonction MySQL utile qui renvoie automatiquement la première valeur non nulle d'une liste de valeurs. Ces valeurs peuvent être fournies à l'aide de littéraux, de noms de colonnes ou d'autres fonctions MySQL. Dans cet article, nous verrons comment utiliser Coalesce dans MySQL.


Comment utiliser Coalesce dans MySQL

Voici les étapes pour utiliser COALSCE dans MySQL


Qu'est-ce que COALESCE dans MySQL

La fonction COALESCE renvoie la première valeur non NULL d'une liste de valeurs. Si toutes les valeurs de la liste sont NULL, elle renvoie NULL. Voici la syntaxe de la fonction Coalesce dans MySQL.

select coalesce(value1, value2, ..., valuen) 
from table_name;

Dans la déclaration ci-dessus, vous devez spécifier le nom de la table et fournir une liste de valeurs séparées par des virgules.

Voici quelques exemples simples pour montrer la fonctionnalité de COALESCE.

mysql> select coalesce(NULL, 2, 3);
+----------------------+
| coalesce(NULL, 2, 3) |
+----------------------+
|                    2 |
+----------------------+

mysql> select coalesce(NULL, NULL);
+----------------------+
| coalesce(NULL, NULL) |
+----------------------+
|                 NULL |
+----------------------+


Pourquoi COALESCE est utilisé dans MySQL

COALESCE est utilisé dans MySQL pour remplacer les valeurs nulles par une autre chaîne de votre choix. Ceci est très utile pour les rapports et les analyses où vous ne souhaitez pas modifier les données réelles mais devez les signaler d'une manière différente.

Disons que vous avez le tableau suivant ventes(id, produit, date_commande, montant) qui contient des valeurs nulles.

mysql> create table sales(id int, 
        product varchar(5),
        order_date date, 
        amount int);

mysql> insert into sales(id, product, order_date, amount)
       values(null, 'A','2020-01-01',150),
       (2, null,'2020-01-01',150),
       (null, 'C',null,150),
       (4, 'D','2020-01-01',null);

mysql> select * from sales;
+------+---------+------------+--------+
| id   | product | order_date | amount |
+------+---------+------------+--------+
| NULL | A       | 2020-01-01 |    150 |
|    2 | NULL    | 2020-01-01 |    150 |
| NULL | C       | NULL       |    150 |
|    4 | D       | 2020-01-01 |   NULL |
+------+---------+------------+--------+

Nous allons maintenant utiliser COALESCE pour obtenir la première valeur non nulle de chaque ligne.

mysql> select coalesce(id, product, order_date, amount) from sales;
+-------------------------------------------+
| coalesce(id, product, order_date, amount) |
+-------------------------------------------+
| A                                         |
| 2                                         |
| C                                         |
| 4                                         |
+-------------------------------------------+

Comme vous pouvez le voir, COALESCE renvoie des valeurs non nulles de chaque ligne.

Vous pouvez également utiliser la fonction COALESCE pour remplacer les valeurs nulles par des chaînes personnalisées. Dans l'exemple suivant, nous remplacerons chaque valeur nulle par la chaîne "NA" en utilisant COALESCE.

mysql> select coalesce(id, 'NA') id, 
       coalesce(product,'NA') product, 
       coalesce(order_date,'NA') order_date, 
       coalesce(amount,'NA') amount 
       from sales;
 +------+---------+------------+--------+
 | id   | product | order_date | amount |
 +------+---------+------------+--------+
 | NA   | A       | 2020-01-01 | 150    |
 | 2    | NA      | 2020-01-01 | 150    |
 | NA   | C       | NA         | 150    |
 | 4    | D       | 2020-01-01 | NA     |
 +------+---------+------------+--------+


COALESCE contre IFNULL MySQL

Bien que IFNULL puisse également être utilisé pour remplacer les valeurs NULL, il ne peut accepter que 2 arguments, renvoie le 1er argument s'il est nul, sinon renvoie le deuxième argument. COALESCE fonctionne avec n'importe quel nombre d'arguments, pas seulement deux.


COALESCE à Ubiq

L'outil Ubiq Reporting prend en charge toutes les requêtes SQL ci-dessus et facilite la visualisation des résultats SQL de différentes manières. Voici la requête COALESCE SQL mentionnée ci-dessus, dans Ubiq.

Besoin d'un outil de reporting pour MySQL ? Ubiq permet de visualiser facilement les données en quelques minutes et de les surveiller dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !