LIKE, ORDER BY y DISTINCT en SQL Server: filtrar datos masivos

Tutorial práctico de LIKE, ORDER BY y DISTINCT en SQL Server: buscar coincidencias con %, ordenar de menor a mayor o DESC, y eliminar valores repetidos.

Video del curso SQL: las tres consultas que más uso en el trabajo para filtrar, ordenar y evitar repetidos · Ver en YouTube

LIKE, ORDER BY y DISTINCT: tres consultas del día a día

En este capítulo vemos tres consultas que uso mucho en el trabajo para filtrar información de forma masiva: LIKE, ORDER BY y DISTINCT.

No son difíciles de aprender. Sí te van a ahorrar tiempo cuando tengas que buscar un cliente, un producto mal escrito o un listado sin repetidos.

Vamos a trabajar sobre Ventas, con columnas como nombre del cliente, nombre del vendedor y precio unitario. Es el mismo tipo de tabla que aparece en un examen de base de datos o en un sistema real.


Preparar la tabla Ventas

Antes de filtrar, conviene mirar los datos:

SELECT *
FROM Ventas;

Si partís de cero, este script replica el escenario del video. Incluye clientes como Diego, María y Marcos para que los ejemplos de LIKE den el mismo resultado.

DROP TABLE IF EXISTS Ventas;

CREATE TABLE Ventas (
  IdVenta INT PRIMARY KEY,
  NombreCliente VARCHAR(50),
  NombreVendedor VARCHAR(50),
  PrecioUnitario DECIMAL(10, 2),
  PorcentajeDescuento DECIMAL(5, 2)
);

INSERT INTO Ventas (
  IdVenta,
  NombreCliente,
  NombreVendedor,
  PrecioUnitario,
  PorcentajeDescuento
) VALUES
(1, 'Diego López', 'Ana', 1500.00, 10),
(2, 'Diego Martínez', 'Bruno', 800.00, 0),
(3, 'Ana Pérez', 'Ana', 1200.00, 5),
(4, 'María Gómez', 'Carla', 2100.00, 15),
(5, 'Marcos Díaz', 'Bruno', 450.00, 0),
(6, 'Camila Ruiz', 'Ana', 990.00, 5),
(7, 'Diego López', 'Carla', 3200.00, 20);

LIKE en SQL: buscar coincidencias

LIKE acompaña a un SELECT con WHERE para traer filas mientras el texto se parezca a un patrón. No exige una igualdad exacta.

Imaginá que te piden todos los clientes que se parezcan a Diego. El primer intento suele ser este:

SELECT *
FROM Ventas
WHERE NombreCliente = 'Diego';

Esa consulta no devuelve nada, aunque Diego esté en la tabla. El motivo es que el nombre guardado no es exactamente Diego: puede ser Diego López o Diego Martínez.

Para esos casos usamos LIKE con el símbolo %.

SELECT *
FROM Ventas
WHERE NombreCliente LIKE 'Diego%';

La lectura es: “traeme las filas cuyo NombreCliente empiece por Diego y después tenga lo que sea”.


Cómo usar % con LIKE

El % es un comodín. Significa “cualquier texto, de cualquier largo, incluso vacío”.

PatrónQué buscaEjemplo
'Diego%'Empieza con DiegoDiego López
'%ego'Termina con egono matchea Diego López
'%ego%'Contiene ego en cualquier parteDiego López, Diego Martínez
'M%'Empieza con MMaría Gómez, Marcos Díaz

Si sacás las primeras letras y dejás solo el final como prefijo, no vas a obtener resultados:

SELECT *
FROM Ventas
WHERE NombreCliente LIKE 'ego%';

Nadie en la tabla empieza por ego. En cambio, si el comodín va adelante, SQL busca ese texto en cualquier posición:

SELECT *
FROM Ventas
WHERE NombreCliente LIKE '%ego%';

Acá sí aparecen los registros de Diego, porque ego está dentro de Diego.


ORDER BY en SQL: ordenar resultados

ORDER BY ordena el resultado según una columna. En el trabajo se usa mucho con números: precios, porcentajes, importes, cantidades.

La consulta base sigue siendo:

SELECT *
FROM Ventas;

Si te piden las ventas ordenadas por precio, de menor a mayor, el criterio va al final:

SELECT *
FROM Ventas
ORDER BY PrecioUnitario;

Por defecto, ORDER BY ordena de menor a mayor (ASC). SQL deja de devolver las filas en el orden original de la tabla y las acomoda por PrecioUnitario.


ORDER BY DESC: de mayor a menor

Si la consigna es la inversa —las ventas más caras primero— agregás DESC al final:

SELECT *
FROM Ventas
ORDER BY PrecioUnitario DESC;

El orden de las cláusulas importa. ORDER BY va después del FROM y, si hay filtro, después del WHERE.


Combinar LIKE con ORDER BY

Las tres piezas se pueden usar juntas. Primero filtrás, después ordenás:

SELECT *
FROM Ventas
WHERE NombreCliente LIKE '%ego%'
ORDER BY PrecioUnitario DESC;

Esto trae las ventas de clientes que contienen ego en el nombre y las ordena de mayor a menor precio. En la práctica: las ventas de Diego, de la más cara a la más barata.

El mismo patrón sirve para otro criterio. Por ejemplo, clientes cuyo nombre empieza con M:

SELECT *
FROM Ventas
WHERE NombreCliente LIKE 'M%'
ORDER BY PrecioUnitario;

Lectura de la consulta:

  1. FROM Ventas: tomo la tabla.
  2. WHERE NombreCliente LIKE 'M%': dejo solo los nombres que empiezan con M.
  3. ORDER BY PrecioUnitario: ordeno esas filas de menor a mayor precio.

DISTINCT en SQL: evitar repetidos

DISTINCT elimina valores duplicados. Sirve cuando te piden un listado de clientes, productos o vendedores sin que se repitan.

Un error común es aplicarlo sobre todas las columnas:

SELECT DISTINCT *
FROM Ventas;

Esa consulta suele devolver la tabla entera. DISTINCT compara la fila completa. Como IdVenta es único —incremental, aleatorio o armado con una fecha como 20260824—, ninguna fila es 100% idéntica a otra.

Para que funcione, hay que elegir la columna en la que sí hay repetidos:

SELECT DISTINCT NombreCliente
FROM Ventas;

Ahora SQL mira solo el nombre. Diego López aparece una vez, aunque tenga más de una venta.


DISTINCT vs GROUP BY

Muchas personas confunden DISTINCT con GROUP BY porque, en un listado de nombres, el resultado se parece.

SELECT NombreCliente
FROM Ventas
GROUP BY NombreCliente;

También te deja un nombre por cliente. La diferencia es el objetivo:

  • GROUP BY agrupa. Forma grupos de Agustina, Ana, Camila, Diego, etc. Después suele ir con COUNT, SUM u otra función.
  • DISTINCT elimina duplicados. No arma un resumen: solo deja valores únicos para filtrar o listar.

Qué consultas uso más en el trabajo

Si tuviera que ordenarlas por uso real:

  1. LIKE: la que más uso. Buscar un producto o un cliente cuando no conozco el nombre exacto.
  2. ORDER BY: muy usada con números. Precios, porcentajes, quién compró más o menos. También ordena texto en forma alfabética, pero el caso más habitual es numérico.
  3. DISTINCT: la uso menos, pero aparece cuando hay que listar clientes u otros valores sin repetidos.

Resumen del video

En este capítulo del curso SQL vimos:

  • Por qué WHERE NombreCliente = 'Diego' puede no devolver filas aunque Diego exista.
  • Cómo LIKE 'Diego%' busca coincidencias, no igualdad exacta.
  • Qué significa % al inicio, al final o en ambos lados.
  • Cómo ORDER BY ordena de menor a mayor y cómo DESC invierte el orden.
  • Por qué ORDER BY va al final de la consulta.
  • Cómo combinar LIKE y ORDER BY en un mismo SELECT.
  • Por qué SELECT DISTINCT * no saca repetidos si el ID es único.
  • La diferencia práctica entre DISTINCT y GROUP BY.

Si esta serie te está sirviendo, en el video también te invito a dejar like, suscribirte y comentar qué casuística de SQL te gustaría ver después.

En este artículo