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

Come confrontare i valori nulli in MySQL

A volte potrebbe essere necessario confrontare una colonna con un valore nullo o confrontare due colonne in cui una di esse ha valori nulli o persino eseguire un controllo nullo per le colonne. In questo articolo vedremo come confrontare i valori null in MySQL. Puoi usarlo per il confronto Null in MySQL.


Come confrontare i valori Null in MySQL

Supponiamo che tu abbia la seguente tabella vendite(id, data_ordine, prezzo_costo, prezzo_vendita)

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

Supponiamo di voler selezionare le righe in cui il prezzo di costo è nullo. In genere, utilizzeresti un'espressione come cost_price=null ma non funziona con valori NULL. In caso di confronto nullo, devi utilizzare IS operatore, ovvero cost_price IS null

Quindi la seguente query SQL non funzionerà

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

La seguente query SQL funziona . Ecco la query SQL per selezionare le righe in cui cost_price è nullo.

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

Leggi anche:Come confrontare due colonne in MySQL

Allo stesso modo, ecco la query SQL per selezionare le righe in cui cost_price non è NULL. In questo caso, utilizziamo IS NOT operatore.

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

È possibile utilizzare IS NULL e IS NOT NULL con le istruzioni UPDATE, INSERT e DELETE.


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

Leggi anche:Come ottenere ogni ennesima riga in MySQL


Con dichiarazione INSERT

Ecco un esempio che utilizza MySQL NULL Comparison nell'istruzione INSERT.

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


Con la dichiarazione DELETE

Ecco un esempio per utilizzare il confronto Null in Delete Statement.

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

Si spera che questo articolo ti aiuti a confrontare i valori NULL in MySQL. Ubiq semplifica la visualizzazione dei dati e il monitoraggio in dashboard in tempo reale. Prova Ubiq gratuitamente.