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.