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.