sql >> Databáze >  >> RDS >> Mysql

Jak používat Coalesce v MySQL

Coalesce je užitečná funkce MySQL, která automaticky vrací první nenulovou hodnotu ze seznamu hodnot. Tyto hodnoty lze poskytnout pomocí literálů, názvů sloupců nebo jiných funkcí MySQL. V tomto článku se podíváme na to, jak používat Coalesce v MySQL.


Jak používat Coalesce v MySQL

Zde jsou kroky k použití COALSCE v MySQL


Co je COALESCE v MySQL

Funkce COALESCE vrací první hodnotu, která není NULL, ze seznamu hodnot. Pokud jsou všechny hodnoty v seznamu NULL, vrátí NULL. Zde je syntaxe funkce Coalesce v MySQL.

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

Ve výše uvedeném příkazu musíte zadat název tabulky a poskytnout seznam hodnot oddělených čárkami.

Zde je několik jednoduchých příkladů, které ukazují funkčnost COALESCE.

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

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


Proč se COALESCE používá v MySQL

COALESCE se v MySQL používá k nahrazení hodnot null nějakým jiným řetězcem podle vašeho výběru. To je velmi užitečné pro vytváření přehledů a analýzy, kde nechcete měnit skutečná data, ale potřebujete je vykazovat jiným způsobem.

Řekněme, že máte následující tabulku prodej (id, produkt, datum_objednávky, částka) který obsahuje hodnoty null.

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 |
+------+---------+------------+--------+

Nyní použijeme COALESCE k získání první nenulové hodnoty z každého řádku.

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

Jak můžete vidět, COALESCE vrací nenulové hodnoty z každého řádku.

Můžete také použít funkci COALESCE k nahrazení hodnot null vlastními řetězci. V následujícím příkladu nahradíme každou hodnotu null řetězcem „NA“ pomocí 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 vs IFNULL MySQL

Ačkoli IFNULL lze také použít k nahrazení hodnot NULL, může přijmout pouze 2 argumenty, vrátí 1. argument, pokud je null, jinak vrátí druhý argument. COALESCE pracuje s libovolným počtem argumentů, ne pouze se dvěma.


COALESCE v Ubiq

Nástroj Ubiq Reporting podporuje všechny výše uvedené SQL dotazy a usnadňuje vizualizaci výsledků SQL různými způsoby. Zde je COALESCE SQL dotaz zmíněný výše v Ubiq.

Potřebujete nástroj pro vytváření sestav pro MySQL? Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Zkuste to ještě dnes!

  1. Maximální velikost pro dotaz SQL Server? klauzule IN? Existuje lepší přístup

  2. Jak zkontrolovat hodnoty parametrů NLS v databázi Oracle

  3. Kroky pro instalaci Mysql56 na linux

  4. Jak funguje funkce NCHAR() v SQL Server (T-SQL)