Czasami może być konieczne porównanie kolumny z wartością null lub porównanie dwóch kolumn, w których jedna z nich ma wartości null, lub nawet wykonanie sprawdzania wartości null dla kolumn. W tym artykule przyjrzymy się, jak porównać wartości null w MySQL. Możesz go użyć do porównania wartości Null w MySQL.
Jak porównywać wartości Null w MySQL
Załóżmy, że masz następującą tabelę sprzedaż(id, data_zamówienia, cena_kosztu, cena_sprzedaży)
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 |
+------+------------+------------+---------------+
Powiedzmy, że chcesz wybrać wiersze, w których koszt własny ma wartość null. Zazwyczaj użyjesz wyrażenia takiego jak cost_price=null ale nie działa z wartościami NULL. W przypadku zerowego porównania musisz użyć IS operator, czyli cena_kosztu JEST zerowa
Dlatego następujące zapytanie SQL nie zadziała
mysql> select * from sales where cost_price=null; Empty set (0.00 sec)
Następujące zapytanie SQL będzie działać . Oto zapytanie SQL, aby wybrać wiersze, w których cena_kosztu ma wartość null.
mysql> select * from sales where cost_price is null; +------+------------+------------+---------------+ | id | order_date | cost_price | selling_price | +------+------------+------------+---------------+ | 4 | 2020-11-03 | NULL | 100 | +------+------------+------------+---------------+
Przeczytaj także:Jak porównać dwie kolumny w MySQL
Podobnie, tutaj jest zapytanie SQL, aby wybrać wiersze, w których cena_kosztu nie ma wartości NULL. W tym przypadku używamy NIE JEST operatora.
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 | +------+------------+------------+---------------+
Możesz użyć IS NULL i IS NOT NULL z instrukcjami UPDATE, INSERT i DELETE.
Z oświadczeniem 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 |
+------+------------+------------+---------------+ Przeczytaj także:Jak uzyskać każdy N-ty wiersz w MySQL
Z oświadczeniem INSERT
Oto przykład, który używa MySQL NULL Comparison w instrukcji INSERT.
mysql> insert into new_sales(id,order_date, cost_price, selling_price)
select * from sales
where cost_price is null;
Z oświadczeniem DELETE
Oto przykład użycia porównania wartości Null w instrukcji 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 |
+------+------------+------------+---------------+
Mamy nadzieję, że ten artykuł pomoże Ci porównać wartości NULL w MySQL. Ubiq ułatwia wizualizację danych i monitorowanie ich w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj Ubiq za darmo.