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.