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
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:
SELECT id,
nombre,
UPPER(nombre) AS mayusculas,
LOWER(nombre) AS minusculas
FROM empleados
ORDER BY id
LIMIT 5;| id | nombre | mayusculas | minusculas |
|---|---|---|---|
| 1 | Carmen Soler | CARMEN SOLER | carmen soler |
| 2 | Alex Ramos | ALEX RAMOS | alex ramos |
| 3 | Bea Molina | BEA MOLINA | bea molina |
| 4 | Carlos Peña | CARLOS PEñA | carlos peña |
| 5 | Diana León | DIANA LEóN | diana león |
Cómo leer el resultado
nombreconserva el valor almacenado.mayusculasyminusculasson alias del resultado calculado.- La consulta no ejecuta ningún
UPDATE, por lo que los datos originales siguen iguales. - 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
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
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.
Solución razonada
SELECT nombre, LOWER(ciudad) AS ciudad_normalizada
FROM clientes
ORDER BY id;La consulta conserva nombre y calcula una segunda columna. No modifica la tabla clientes.
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.
LOWER dentro de la condición de WHERE.'madrid'.ciudad original para comprobar que la función no ha cambiado la tabla.Solución razonada
SELECT id, nombre, ciudad
FROM clientes
WHERE LOWER(ciudad) = 'madrid'
ORDER BY id;| id | nombre | ciudad |
|---|---|---|
| 1 | Ana Torres | Madrid |
| 3 | Marta Ruiz | Madrid |
| 6 | Pablo Sanz | Madrid |
| 9 | Noa Vidal | Madrid |
LOWER(ciudad) transforma el valor solo durante la evaluación de la condición. La columna mostrada sigue siendo Madrid. En SQLite básico esta técnica es fiable para ASCII; para otros alfabetos o reglas lingüísticas debes comprobar la configuración del motor.
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
UPPERyLOWERdevuelven texto transformado.- No modifican el valor almacenado.
NULLcontinúa siendoNULL.- 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.