Funciones de texto · guía práctica

UPPER y LOWER

Transforman el texto del resultado sin cambiar el valor almacenado. También muestran por qué el tratamiento de tildes y otros caracteres depende del motor.

Lectura: 7–9 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué hacen UPPER y LOWER

UPPER devuelve una versión del texto en mayúsculas y LOWER devuelve una versión en minúsculas. Las dos funciones transforman el valor mostrado por la consulta: no cambian el contenido almacenado en la tabla.

Son útiles para presentar nombres de forma uniforme, preparar comparaciones o construir columnas calculadas. Antes de utilizarlas para búsquedas, recuerda que las reglas de mayúsculas dependen del motor, la configuración regional y la intercalación.

Sintaxis básica

Sintaxis
UPPER(texto)
LOWER(texto)

El argumento puede ser una columna, una cadena o una expresión que devuelva texto. Si el valor es NULL, el resultado también es NULL.

Ejemplo guiado

Queremos mostrar cinco empleados con su nombre original y dos versiones calculadas:

SQL
SELECT id,
       nombre,
       UPPER(nombre) AS mayusculas,
       LOWER(nombre) AS minusculas
FROM empleados
ORDER BY id
LIMIT 5;
Resultado comprobado con la base educativa
idnombremayusculasminusculas
1Carmen SolerCARMEN SOLERcarmen soler
2Alex RamosALEX RAMOSalex ramos
3Bea MolinaBEA MOLINAbea molina
4Carlos PeñaCARLOS PEñAcarlos peña
5Diana LeónDIANA LEóNdiana león

Cómo leer el resultado

  1. nombre conserva el valor almacenado.
  2. mayusculas y minusculas son alias del resultado calculado.
  3. La consulta no ejecuta ningún UPDATE, por lo que los datos originales siguen iguales.
  4. En la compilación básica de SQLite, el cambio de mayúsculas integrado se limita a caracteres ASCII. Por eso conviene probar los nombres con tildes en el motor real del proyecto.

Para comparar sin importar mayúsculas: puedes normalizar ambos lados, por ejemplo LOWER(ciudad) = 'madrid'. En sistemas reales suele ser mejor revisar también la intercalación y los índices, porque aplicar una función a una columna puede afectar la forma de buscar.

Error frecuente

Pensar que la tabla queda modificada

Consulta de lectura
SELECT UPPER(nombre) FROM empleados;

La función solo modifica el valor del resultado. Para cambiar datos guardados necesitarías un UPDATE, una operación distinta que debe realizarse con precaución.

Comprueba lo aprendido

Básica · apoyo gradual

Normaliza las ciudades

Escribe una consulta que muestre nombre y una versión en minúsculas de ciudad con el alias ciudad_normalizada. Ordena por id.

Autónoma · transferencia

Busca una ciudad sin depender de sus mayúsculas

Devuelve id, nombre y ciudad de los clientes cuya ciudad sea Madrid, pero realiza la comparación sobre una versión en minúsculas de la columna. Ordena por id.

Criterio de éxito: deben aparecer cuatro clientes —Ana Torres, Marta Ruiz, Pablo Sanz y Noa Vidal— sin modificar el valor almacenado de ciudad.

Compatibilidad y caracteres

PostgreSQL aplica las reglas de la configuración regional de la base. MySQL utiliza el juego de caracteres y la intercalación correspondientes. SQLite, sin extensiones adicionales, transforma de forma integrada las letras ASCII; los caracteres fuera de ese conjunto pueden conservarse. Si trabajas con nombres internacionales, comprueba ejemplos representativos.

Qué debes recordar

  • UPPER y LOWER devuelven texto transformado.
  • No modifican el valor almacenado.
  • NULL continúa siendo NULL.
  • La conversión de caracteres depende del motor y su configuración.

Conceptos relacionados

Fuentes técnicas consultadas

Se utilizaron para comprobar el comportamiento y las diferencias entre motores. La explicación y los ejemplos son originales.