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