Módulo 2 · 03 | Operadores y filtros avanzados

MÓDULO 2 · CLASE 3

Filtros avanzados, funciones y CASE

LIKE, IN, BETWEEN y NULL. Funciones de texto y fecha. Lógica condicional con CASE WHEN.

1. LIKE: buscar por patrones de texto

LIKE permite buscar textos que siguen un patrón. Usa dos comodines: % representa cualquier cantidad de caracteres (incluso ninguno) y _ representa exactamente un carácter.

PatrónEncuentraEjemplo
'L%'Empieza con LLomas, López
'%Agua%'Contiene ‘Agua’Agua 5L.
'%a'Termina en aElena, Teresa
'_____'Exactamente 5 letrasPablo, Elena
SELECT NOMBRE, APELLIDOS FROM alumnos WHERE APELLIDOS LIKE 'L%';

2. IN: pertenecer a una lista

IN reemplaza varios OR encadenados por algo más limpio: comprueba si el valor está dentro de una lista. NOT IN hace lo contrario (excluye la lista).

SELECT NOMBRE, UBICACION FROM mascotas WHERE UBICACION IN ('E01','E02','E03'); -- equivale a UBICACION='E01' OR UBICACION='E02' OR ...

3. BETWEEN: rangos

BETWEEN a AND b selecciona los valores dentro de un rango, incluyendo los extremos. Funciona con números y también con fechas.

SELECT NOMBRE, SALARIO FROM empleados WHERE SALARIO BETWEEN 1300 AND 1450; SELECT * FROM alumnos WHERE F_NACIMIENTO BETWEEN '1990-01-01' AND '1995-12-31';

4. NULL: la ausencia de valor

NULL significa «valor desconocido o no cargado». No es cero ni texto vacío. Por eso no se compara con = sino con IS NULL / IS NOT NULL.

Error típico

WHERE ID_PROFE = NULL no devuelve ninguna fila. Lo correcto es WHERE ID_PROFE IS NULL.
SELECT ID_CURSO, TITULO FROM cursos WHERE ID_PROFE IS NULL; -- cursos sin profesor SELECT TITULO, COALESCE(ID_PROFE, 0) AS profe FROM cursos; -- COALESCE reemplaza el NULL

5. Funciones de texto

FunciónQué hace
UPPER / LOWERPasa el texto a mayúsculas o minúsculas
CONCATUne columnas: CONCAT(NOMBRE,' ',APELLIDOS)
LENGTHCantidad de caracteres
SUBSTRINGExtrae una parte: SUBSTRING(NOMBRE,1,3)
TRIMQuita espacios sobrantes
REPLACEReemplaza un texto por otro
SELECT CONCAT(NOMBRE,' ',APELLIDOS) AS nombre_completo FROM empleados;

6. Funciones de fecha

FunciónQué hace
NOW / CURDATEFecha y hora actuales
YEAR / MONTH / DAYExtrae año, mes o día de una fecha
TIMESTAMPDIFFDiferencia entre fechas (ej. edad en años)
DATE_FORMATMuestra la fecha en otro formato (dd/mm/aaaa)
DATEDIFFDías entre dos fechas
SELECT NOMBRE, TIMESTAMPDIFF(YEAR, F_NACIMIENTO, CURDATE()) AS edad FROM alumnos;

7. CASE WHEN: categorías al vuelo

CASE es un «SI… ENTONCES…» dentro del SELECT: crea una columna nueva según condiciones. Sirve para clasificar valores y para traducir códigos a texto legible. ELSE cubre los casos restantes.

SELECT NOMBRE, SALARIO, CASE WHEN SALARIO >= 1450 THEN 'Alto' WHEN SALARIO >= 1350 THEN 'Medio' ELSE 'Base' END AS nivel_salarial FROM empleados;

Tip

CASE también traduce códigos: CASE ESPECIE WHEN 'P' THEN 'Perro' WHEN 'G' THEN 'Gato' END.

8. Con IA

Pedile a la IA

  • «Explicá y corregí los errores de sintaxis de esta consulta: …»
  • «¿Por qué WHERE ID_PROFE = NULL no devuelve filas? ¿Cómo se corrige?»
  • «Traducí a SQL: artículos cuyo nombre contenga ‘gr.’ y cuesten menos de 2.»

Ejercicios de práctica (8)
  • Alumnos cuyo NOMBRE empiece con ‘M’ o con ‘S’.
  • Mascotas ubicadas en E01, E03 o E05 (usá IN).
  • Empleados con salario entre 1.320 y 1.500 (usá BETWEEN).
  • Cursos que no tienen profesor asignado (usá IS NULL).
  • Nombre completo de los empleados en MAYÚSCULAS (CONCAT + UPPER).
  • Año de nacimiento de cada alumno (YEAR).
  • Edad de cada empleado (TIMESTAMPDIFF).
  • Clasificá los artículos con CASE: ‘Barato’ (<1.5), ‘Medio’ (1.5–5), ‘Caro’ (>5).

Dejá un comentario

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

Scroll al inicio
¿Consultas? Escribinos