sql >> Database teknologi >  >> RDS >> Mysql

Sådan sammenlignes null-værdier i MySQL

Nogle gange kan det være nødvendigt at sammenligne en kolonne med null-værdi eller sammenligne to kolonner, hvor en af ​​dem har nul-værdier, eller endda udføre nul-check for kolonner. I denne artikel vil vi se på, hvordan man sammenligner null-værdier i MySQL. Du kan bruge det til nul-sammenligning i MySQL.


Sådan sammenlignes null-værdier i MySQL

Lad os sige, at du har følgende tabel salg(id, ordredato, kostpris, salgspris)

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 |
+------+------------+------------+---------------+

Lad os sige, at du vil vælge rækker, hvor kostprisen er nul. Typisk vil du bruge et udtryk såsom cost_price=null men det virker ikke med NULL-værdier. I tilfælde af nul-sammenligning skal du bruge IS operatør, dvs. kostpris ER null

Så den følgende SQL-forespørgsel virker ikke

mysql> select * from sales where cost_price=null;
Empty set (0.00 sec)

Følgende SQL-forespørgsel virker . Her er SQL-forespørgslen til at vælge rækker, hvor cost_price er null.

mysql> select * from sales where cost_price is null;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    4 | 2020-11-03 |       NULL |           100 |
+------+------------+------------+---------------+

Læs også:Sådan sammenligner du to kolonner i MySQL

På samme måde er her SQL-forespørgslen til at vælge rækker, hvor cost_price ikke er NULL. I dette tilfælde bruger vi IS NOT operatør.

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 |
+------+------------+------------+---------------+

Du kan bruge IS NULL og IS NOT NULL med UPDATE, INSERT og DELETE-sætning.


Med OPDATERINGSerklæring

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 |
+------+------------+------------+---------------+

Læs også:Sådan får du hver Nth Row i MySQL


Med INSERT-erklæring

Her er et eksempel, der bruger MySQL NULL Comparison i INSERT-sætning.

mysql> insert into new_sales(id,order_date, cost_price, selling_price)
      select * from sales
      where cost_price is null;


Med SLET-erklæring

Her er et eksempel på brug af nul-sammenligning i Slet erklæring.

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 |
+------+------------+------------+---------------+

Forhåbentlig hjælper denne artikel dig med at sammenligne NULL-værdier i MySQL. Ubiq gør det nemt at visualisere data og overvåge dem i dashboards i realtid. Prøv Ubiq gratis.

  1. Understøttelse af flere sprog i 11i/R12

  2. Oracle SQL-udvikler:Vis REFCURSOR-resultater i gitter?

  3. Begræns en sammenkædet server til et enkelt lokalt login (T-SQL-eksempel)

  4. Forskellen mellem disse to sammenføjningstabeller?