Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment comparer des valeurs nulles dans MySQL

Parfois, vous devrez peut-être comparer une colonne avec une valeur nulle ou comparer deux colonnes dont l'une a des valeurs nulles, ou même effectuer une vérification nulle pour les colonnes. Dans cet article, nous verrons comment comparer les valeurs nulles dans MySQL. Vous pouvez l'utiliser pour la comparaison Null dans MySQL.


Comment comparer des valeurs nulles dans MySQL

Disons que vous avez le tableau suivant sales(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 |
+------+------------+------------+---------------+

Supposons que vous souhaitiez sélectionner des lignes où le prix de revient est nul. En règle générale, vous utiliserez une expression telle que cost_price=null mais cela ne fonctionne pas avec les valeurs NULL. En cas de comparaison nulle, vous devez utiliser IS opérateur, c'est-à-dire cost_price IS null

Ainsi, la requête SQL suivante ne fonctionnera pas

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

La requête SQL suivante fonctionnera . Voici la requête SQL pour sélectionner les lignes où cost_price est nul.

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

A lire aussi :Comment comparer deux colonnes dans MySQL

De même, voici la requête SQL pour sélectionner les lignes où cost_price n'est pas NULL. Dans ce cas, nous utilisons IS NOT opérateur.

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

Vous pouvez utiliser IS NULL et IS NOT NULL avec les instructions UPDATE, INSERT et DELETE.


Avec l'instruction 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 |
+------+------------+------------+---------------+

Lisez également :Comment obtenir chaque Nième ligne dans MySQL


Avec l'instruction INSERT

Voici un exemple qui utilise la comparaison MySQL NULL dans l'instruction INSERT.

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


Avec l'instruction DELETE

Voici un exemple d'utilisation de la comparaison Null dans 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 |
+------+------------+------------+---------------+

Espérons que cet article vous aidera à comparer les valeurs NULL dans MySQL. Ubiq facilite la visualisation des données et leur suivi dans des tableaux de bord en temps réel. Essayez Ubiq gratuitement.