sql >> Databasteknik >  >> RDS >> Mysql

Hur man jämför nollvärden i MySQL

Ibland kan du behöva jämföra en kolumn med nollvärde eller jämföra två kolumner där en av dem har nollvärden, eller till och med utföra nollkontroll för kolumner. I den här artikeln kommer vi att titta på hur man jämför nollvärden i MySQL. Du kan använda den för Null-jämförelse i MySQL.


Hur man jämför nollvärden i MySQL

Låt oss säga att du har följande tabell försäljning(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 |
+------+------------+------------+---------------+

Låt oss säga att du vill välja rader där självkostnadspriset är noll. Vanligtvis skulle du använda ett uttryck som cost_price=null men det fungerar inte med NULL-värden. Vid nolljämförelse måste du använda IS operator, det vill säga kostnadspris ÄR null

Så följande SQL-fråga kommer inte att fungera

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

Följande SQL-fråga kommer att fungera . Här är SQL-frågan för att välja rader där kostnadspris är 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 också:Hur man jämför två kolumner i MySQL

På samma sätt är här SQL-frågan för att välja rader där kostnadspris inte är NULL. I det här fallet använder 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 använda IS NULL och IS NOT NULL med UPDATE, INSERT och DELETE-satsen.


Med UPPDATERING

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 också:Hur man får varje N:te rad i MySQL


Med INSERT-utlåtande

Här är ett exempel som använder MySQL NULL Comparison i INSERT-satsen.

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


Med DELETE-deklaration

Här är ett exempel på hur du använder Null-jämförelse i Ta bort uttalande.

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

Förhoppningsvis hjälper den här artikeln dig att jämföra NULL-värden i MySQL. Ubiq gör det enkelt att visualisera data och övervaka dem i realtidsinstrumentpaneler. Prova Ubiq gratis.

  1. Hur man importerar data från textfil till mysql-databas

  2. Kör en dynamisk korstabellsfråga

  3. Returnera nummer från Oracle Select-satsen efter analysdatum

  4. Initial array i funktion för att aggregera flerdimensionell array