Понякога може да се наложи да сравните колона с нулева стойност или да сравните две колони, където една от тях има нулеви стойности, или дори да извършите проверка за нула за колони. В тази статия ще разгледаме как да сравним нулеви стойности в MySQL. Можете да го използвате за сравнение с Null в MySQL.
Как да сравним нулеви стойности в MySQL
Да кажем, че имате следната таблица sales(id, order_date, cost_price, selling_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 |
+------+------------+------------+---------------+
Да кажем, че искате да изберете редове, където себестойността е нула. Обикновено бихте използвали израз като cost_price=null но не работи с NULL стойности. В случай на нулево сравнение, трябва да използвате IS оператор, тоест cost_price е нула
Така че следната SQL заявка няма да работи
mysql> select * from sales where cost_price=null; Empty set (0.00 sec)
Следната SQL заявка ще работи . Ето SQL заявката за избор на редове, където cost_price е нула.
mysql> select * from sales where cost_price is null; +------+------------+------------+---------------+ | id | order_date | cost_price | selling_price | +------+------------+------------+---------------+ | 4 | 2020-11-03 | NULL | 100 | +------+------------+------------+---------------+
Прочетете също:Как да сравните две колони в MySQL
По същия начин, тук е SQL заявката за избор на редове, където cost_price не е NULL. В този случай използваме НЕ Е оператор.
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 | +------+------------+------------+---------------+
Можете да използвате IS NULL и IS NOT NULL с изрази UPDATE, INSERT и DELETE.
С изявление за актуализация
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 |
+------+------------+------------+---------------+ Прочетете също:Как да получите всеки N-ти ред в MySQL
С изявление INSERT
Ето пример, който използва MySQL NULL сравнение в израза INSERT.
mysql> insert into new_sales(id,order_date, cost_price, selling_price)
select * from sales
where cost_price is null;
С оператор 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 |
+------+------------+------------+---------------+
Надяваме се, че тази статия ще ви помогне да сравните NULL стойности в MySQL. Ubiq улеснява визуализирането на данни и наблюдението им в табла за управление в реално време. Опитайте Ubiq безплатно.