sql >> Base de Datos >  >> RDS >> Mysql

Cómo comparar valores nulos en MySQL

A veces, es posible que deba comparar una columna con valor nulo o comparar dos columnas donde una de ellas tiene valores nulos, o incluso realizar una verificación nula para las columnas. En este artículo veremos cómo comparar valores nulos en MySQL. Puede usarlo para la comparación nula en MySQL.


Cómo comparar valores nulos en MySQL

Digamos que tiene la siguiente tabla ventas(id, fecha_pedido, precio_costo, precio_venta)

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

Digamos que desea seleccionar filas donde el precio de costo es nulo. Por lo general, usaría una expresión como cost_price=null pero no funciona con valores NULL. En caso de comparación nula, debe usar IS operador, es decir, cost_price ES nulo

Entonces, la siguiente consulta SQL no funcionará

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

La siguiente consulta SQL funcionará . Aquí está la consulta SQL para seleccionar filas donde cost_price es nulo.

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

Lea también:Cómo comparar dos columnas en MySQL

De manera similar, aquí está la consulta SQL para seleccionar filas donde cost_price no es NULL. En este caso, usamos IS NOT operador.

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

Puede usar IS NULL y IS NOT NULL con la instrucción UPDATE, INSERT y DELETE.


Con Declaración de ACTUALIZACIÓN

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

Lea también:Cómo obtener cada enésima fila en MySQL


Con instrucción INSERT

Aquí hay un ejemplo que usa la comparación NULL de MySQL en la instrucción INSERT.

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


Con instrucción DELETE

Aquí hay un ejemplo para usar la comparación nula en la declaración de eliminación.

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

Con suerte, este artículo lo ayudará a comparar valores NULL en MySQL. Ubiq facilita la visualización de datos y la supervisión en paneles en tiempo real. Prueba Ubiq gratis.