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.