Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да сравним нулеви стойности в MySQL

Понякога може да се наложи да сравните колона с нулева стойност или да сравните две колони, където една от тях има нулеви стойности, или дори да извършите проверка за нула за колони. В тази статия ще разгледаме как да сравним нулеви стойности в 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 безплатно.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Данните с отворен код нарастват:Избор на MySQL, NoSQL или и двете

  2. MySQL подготвени изявления

  3. 4 начина за изброяване на всички изгледи в MySQL

  4. Предотвратяване на автоматично увеличение на InnoDB НА ДУПЛИКАТ КЛЮЧ

  5. Грешка в MySQL:'Отказан достъп за потребител 'root'@'localhost'