Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak porównywać wartości zerowe w MySQL

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć rekord MySQL po określonym czasie?

  2. Jak mogę włączyć rozszerzenie MySQLi w PHP 7?

  3. Różnica między tymi dwoma podejściami do łączenia tabel?

  4. Jak uruchomić wiele instancji MySQL na tym samym komputerze?

  5. Jak zwrócić kolumny liczb całkowitych i liczbowych z MySQL jako liczby całkowite i numeryczne w PHP?