Đôi khi bạn có thể cần so sánh một cột với giá trị null hoặc so sánh hai cột trong đó một trong số chúng có giá trị null hoặc thậm chí thực hiện kiểm tra null cho các cột. Trong bài viết này, chúng ta sẽ xem xét cách so sánh các giá trị null trong MySQL. Bạn có thể sử dụng nó để so sánh Null trong MySQL.
Cách so sánh giá trị rỗng trong MySQL
Giả sử bạn có bảng sau doanh số bán hàng (id, order_date, cost_price, sell_price)
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 | +------+------------+------------+---------------+
Giả sử bạn muốn chọn các hàng có giá vốn bằng rỗng. Thông thường, bạn sẽ sử dụng một biểu thức chẳng hạn như cost_price =null nhưng nó không hoạt động với các giá trị NULL. Trong trường hợp so sánh rỗng, bạn cần sử dụng IS toán tử, tức là, giá_phí IS null
Vì vậy, truy vấn SQL sau sẽ không hoạt động
mysql> select * from sales where cost_price=null; Empty set (0.00 sec)
Truy vấn SQL sau sẽ hoạt động . Đây là truy vấn SQL để chọn các hàng có giá_phí_mục_phí bằng null.
mysql> select * from sales where cost_price is null; +------+------------+------------+---------------+ | id | order_date | cost_price | selling_price | +------+------------+------------+---------------+ | 4 | 2020-11-03 | NULL | 100 | +------+------------+------------+---------------+
Cũng nên đọc:Cách so sánh hai cột trong MySQL
Tương tự, đây là truy vấn SQL để chọn các hàng có giá_phí không phải là NULL. Trong trường hợp này, chúng tôi sử dụng KHÔNG PHẢI nhà điều hành.
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 | +------+------------+------------+---------------+
Bạn có thể sử dụng IS NULL và IS NOT NULL với câu lệnh UPDATE, INSERT và DELETE.
Với Tuyên bố CẬP NHẬT
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 | +------+------------+------------+---------------+
Cũng nên đọc:Cách nhận mọi hàng thứ N trong MySQL
Với Tuyên bố CHÈN
Dưới đây là một ví dụ sử dụng MySQL NULL Comparison trong câu lệnh INSERT.
mysql> insert into new_sales(id,order_date, cost_price, selling_price) select * from sales where cost_price is null;
Với tuyên bố DELETE
Dưới đây là một ví dụ để sử dụng so sánh Null trong Xóa câu lệnh.
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 | +------+------------+------------+---------------+
Hy vọng rằng, bài viết này sẽ giúp bạn so sánh các giá trị NULL trong MySQL. Ubiq giúp dễ dàng trực quan hóa dữ liệu và theo dõi chúng trong trang tổng quan thời gian thực. Dùng thử Ubiq miễn phí.