¿Cómo filtrar valores nulos para que duren mientras se ordena ascendentemente en SQL?

En este artículo, veremos cómo hacer que nulo quede en último lugar al ordenar de forma ascendente en SQL. SQL trata los valores NULL como inferiores a 0, por lo que al clasificarlos en orden ascendente, los valores NULL siempre parecen estar al principio.

Podemos hacer valores NULL al fin por dos métodos.

Método 1: Usar el operador Menos

Este método solo funciona con números y valores de fecha. El operador menos (-) antes del nombre de la columna hace que los valores se ordenen en orden inverso. El operador menos no tiene efecto en los valores NULL.

Sintaxis:

SELECT column_name FROM table_name ORDER BY -column_name DESC;

Aquí, si agregamos la palabra clave DESC , todos los valores se ordenan en orden descendente manteniendo los valores NULL al final y el operador menos sin cambiar la posición de los valores NULL, ordene los no valores en orden inverso (orden ascendente).

Paso 1: Crear una base de datos

Use la siguiente instrucción SQL para crear una base de datos llamada geeks.

Consulta:

CREATE DATABASE geeks;

Paso 2: Uso de la base de datos

Use la siguiente instrucción SQL para cambiar el contexto de la base de datos a geeks.

Consulta:

USE geeks;

Paso 3: definición de la tabla

Tenemos la siguiente demo_table en la base de datos de nuestro geek.

Consulta:

CREATE TABLE demo_table(
Name VARCHAR(20),
Age int,
City VARCHAR(20));

Paso 4: Insertar datos en la tabla

INSERT INTO demo_table VALUES('Romy', 22,'Delhi'),
('Rinkle', NULL, 'Delhi'),
('Ayushi', 21, 'Patna'),
('Shalini', 23, 'Patna'),
('Akanksha', NULL, 'Delhi');

Paso 5: Ver los datos de la tabla

Use el siguiente comando para ver el contenido de demo_table:

Consulta:

SELECT * FROM demo_table;

Producción:

Paso 6: Ordene la columna Edad haciendo que los valores NULL aparezcan en el último

Consulta:

SELECT * FROM demo_table ORDER BY -AGE DESC;

Producción:

Método 2: Usar la función COALESCE()

COALESCE(): esta función devuelve el primer valor no nulo de la lista.

Usaremos demo_table para la demostración.

Sintaxis:

SELECT * FROM table_name ORDER BY COALESCE(column_name, (select max(column_name) from table_name)+1);

En esta consulta, COALESCE crea valores NULL de la columna para devolver (1 + valor máximo) de la columna, por lo que es el valor máximo que se devolverá al final mientras se ordena en orden ascendente.

Consulta:

SELECT * FROM demo_table ORDER BY COALESCE(AGE, (select max(AGE) from demo_table)+1);

Producción:

Publicación traducida automáticamente

Artículo escrito por romy421kumari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *