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

Jak porovnat hodnoty Null v MySQL

Někdy může být nutné porovnat sloupec s hodnotou null nebo porovnat dva sloupce, kde jeden z nich má hodnoty null, nebo dokonce provést kontrolu null pro sloupce. V tomto článku se podíváme na to, jak porovnat hodnoty null v MySQL. Můžete jej použít pro porovnání Null v MySQL.


Jak porovnávat hodnoty Null v MySQL

Řekněme, že máte následující tabulku prodej(id, datum_objednávky, cena_cena, prodejní_cena)

mysql> create table sales(
                id int, 
                order_date date, 
                cost_price int, 
                selling_price int);

mysql> describe sales;
+---------------+---------+------+-----+---------+-------+
| Field         | Type    | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| id            | int(11) | YES  |     | NULL    |       |
| order_date    | date    | YES  |     | NULL    |       |
| cost_price    | int(11) | YES  |     | NULL    |       |
| selling_price | int(11) | YES  |     | NULL    |       |
+---------------+---------+------+-----+---------+-------+

mysql> insert into sales(id,order_date,cost_price,selling_price)
       values(1,'2020-11-01',150,250),
             (2,'2020-11-02',200,300);

mysql> insert into sales(id,order_date, cost_price) 
       values(3, '2020-11-03',100);

mysql> insert into sales(id,order_date, selling_price) 
       values(4, '2020-11-03',100);

mysql> select * from sales;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    1 | 2020-11-01 |        150 |           250 |
|    2 | 2020-11-02 |        200 |           300 |
|    3 | 2020-11-03 |        100 |          NULL |
|    4 | 2020-11-03 |       NULL |           100 |
+------+------------+------------+---------------+

Řekněme, že chcete vybrat řádky, kde je nákladová cena nulová. Obvykle byste použili výraz jako cost_price=null ale nepracuje s hodnotami NULL. V případě nulového srovnání musíte použít IS operátor, tj. cost_price IS null

Následující SQL dotaz tedy nebude fungovat

mysql> select * from sales where cost_price=null;
Empty set (0.00 sec)

Následující SQL dotaz bude fungovat . Zde je dotaz SQL pro výběr řádků, kde cost_price je null.

mysql> select * from sales where cost_price is null;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    4 | 2020-11-03 |       NULL |           100 |
+------+------------+------------+---------------+

Přečtěte si také:Jak porovnat dva sloupce v MySQL

Podobně zde je dotaz SQL pro výběr řádků, kde cena_cena není NULL. V tomto případě používáme NENÍ operátor.

mysql> select * from sales where cost_price is not null;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    1 | 2020-11-01 |        150 |           250 |
|    2 | 2020-11-02 |        200 |           300 |
|    3 | 2020-11-03 |        100 |          NULL |
+------+------------+------------+---------------+

Můžete použít IS NULL a IS NOT NULL s příkazy UPDATE, INSERT a DELETE.


S prohlášením UPDATE

mysql> update sales
       set selling_price=350
       where cost_price is null;

mysql> select * from sales;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    1 | 2020-11-01 |        150 |           250 |
|    2 | 2020-11-02 |        200 |           300 |
|    3 | 2020-11-03 |        100 |          NULL |
|    4 | 2020-11-03 |       NULL |           350 |
+------+------------+------------+---------------+

Přečtěte si také:Jak získat každý N-tý řádek v MySQL


S příkazem INSERT

Zde je příklad, který používá MySQL NULL Comparison v příkazu INSERT.

mysql> insert into new_sales(id,order_date, cost_price, selling_price)
      select * from sales
      where cost_price is null;


S příkazem DELETE

Zde je příklad použití porovnání Null v příkazu Delete.

mysql> delete from sales
       where cost_price is null;

mysql> select * from sales;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    1 | 2020-11-01 |        150 |           250 |
|    2 | 2020-11-02 |        200 |           300 |
|    3 | 2020-11-03 |        100 |          NULL |
+------+------------+------------+---------------+

Doufejme, že vám tento článek pomůže porovnat hodnoty NULL v MySQL. Ubiq usnadňuje vizualizaci dat a jejich sledování na řídicích panelech v reálném čase. Vyzkoušejte Ubiq zdarma.

  1. SQL TABULKA

  2. Pochopení pohledů v SQL

  3. Jak vybrat pomocí klauzule WITH RECURSIVE

  4. Jak mohu sloučit dvě tabulky MySQL?