Trabajar con datos de texto es el pan de cada día en las tareas de bases de datos. Imagina que eres desarrollador de una tienda online y tienes una base de datos de usuarios. Necesitas mostrar los nombres completos de los usuarios para un banner de bienvenida en la web, por ejemplo: "Bienvenido, Otto Art!". O necesitas estandarizar todos los emails (por ejemplo, ponerlos en minúsculas). En estos casos, las operaciones de cadenas son imprescindibles.
PostgreSQL te da herramientas potentes para trabajar con texto. Hoy vamos a ver tres herramientas básicas:
CONCAT()— unir cadenas.UPPER()— pasar una cadena a mayúsculas.LOWER()— pasar una cadena a minúsculas.
Trabajando con la función CONCAT()
La función CONCAT() te permite juntar varias cadenas en una sola. Es súper útil si los datos están en columnas distintas pero necesitas unirlos para mostrarlos.
Sintaxis
CONCAT(string1, string2, ..., stringN)
string1,string2,stringN— las cadenas o columnas que quieres unir.- Devuelve una sola cadena con todos los argumentos juntos.
Ejemplo: trabajando con nombres
Supón que tienes una tabla students:
| first_name | last_name |
|---|---|
| Otto | Art |
| Maria | Chi |
| Anna | Pal |
Tu objetivo: mostrar los nombres completos de los estudiantes en formato "Nombre Apellido".
Consulta:
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;
Resultado:
| full_name |
|---|
| Otto Art |
| Maria Chi |
| Anna Pal |
Fíjate en el ' ' entre el nombre y el apellido. Es un espacio que añadimos para separar las cadenas.
Detalles a tener en cuenta
CONCAT() ignora NULL. Si uno de los argumentos es NULL, simplemente lo salta. Si aún no sabes qué es NULL, tranqui — lo veremos más adelante.
Alternativa a CONCAT() — el operador ||, por ejemplo:
SELECT first_name || ' ' || last_name AS full_name FROM students;
Cambiar el case de las cadenas: UPPER() y LOWER()
Imagina que trabajas con emails que los usuarios han escrito en todos los cases posibles: ivan@example.com, IVAN@EXAMPLE.COM. Para estandarizar, muchas veces necesitas:
- poner el texto en un solo formato antes de comparar (por ejemplo,
lowercase). - resaltar palabras importantes (por ejemplo,
UPPERCASEpara títulos).
UPPER(): texto en mayúsculas
La función UPPER() convierte el texto a mayúsculas.
Sintaxis:
UPPER(string)
string— la cadena o el nombre de la columna de texto.
Ejemplo:
En la tabla students añadimos la columna email:
| first_name | last_name | |
|---|---|---|
| Otto | Art | otto@example.com |
| Maria | Chi | MARIA@EXAMPLE.com |
| Anna | Pal | anna.pal@mail.ru |
Queremos mostrar los emails en mayúsculas:
SELECT email, UPPER(email) AS email_upper
FROM students;
Resultado:
| email_upper | |
|---|---|
| otto@example.com | OTTO@EXAMPLE.COM |
| MARIA@EXAMPLE.com | MARIA@EXAMPLE.COM |
| anna.pal@gmail.com | ANNA.PAL@GMAIL.COM |
LOWER(): texto en minúsculas
Igual que antes, la función LOWER() convierte el texto a minúsculas.
Sintaxis:
LOWER(string)
Ejemplo:
Ponemos los emails en minúsculas:
SELECT email, LOWER(email) AS email_lower
FROM students;
Resultado:
| email_lower | |
|---|---|
| otto@example.com | otto@example.com |
| MARIA@EXAMPLE.com | maria@example.com |
| anna.pal@gmail.com | anna.pal@gmail.com |
Ejemplos prácticos y casos
Vamos a juntar todo lo que hemos visto.
Crear el nombre completo en mayúsculas
Consulta:
SELECT CONCAT(UPPER(first_name), ' ', UPPER(last_name)) AS full_name_upper
FROM students;
Resultado:
| full_name_upper |
|---|
| OTTO ART |
| MARIA CHI |
| ANNA PAL |
Aquí usamos la función CONCAT() para unir nombre y apellido, y UPPER() para ponerlo todo en mayúsculas.
Ejemplo: estandarizar emails
Queremos poner todos los emails en el mismo formato — minúsculas:
UPDATE students
SET email = LOWER(email);
Ahora todos los emails en la tabla tienen el mismo formato, sin importar cómo estaban antes.
Cómo funciona el operador UPDATE lo verás en las próximas lecciones.
Preparar un saludo para los usuarios
Añadimos al nombre completo el saludo "Bienvenido":
SELECT CONCAT('Bienvenido, ', first_name, ' ', last_name, '!') AS greeting
FROM students;
Resultado:
| greeting |
|---|
| Bienvenido, Otto Art! |
| Bienvenido, Maria Chi! |
| Bienvenido, Anna Pal! |
Errores típicos al trabajar con funciones de texto
Si te olvidas el espacio en CONCAT(), el resultado puede quedar raro. Por ejemplo:
SELECT CONCAT(first_name, last_name) AS full_name
FROM students;
El resultado será: "OttoArt", "MariaChi". Siempre mete el espacio donde toca.
Uso de NULL. Si uno de los argumentos de CONCAT() es NULL, la cadena puede quedar incompleta. Por ejemplo:
SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) AS full_name
FROM students;
Si middle_name = NULL, el resultado será "Otto NULL Art". Para evitar esto, puedes usar la función COALESCE():
SELECT CONCAT(first_name, ' ', COALESCE(middle_name, ''), ' ', last_name) AS full_name
FROM students;
Más sobre NULL y la función COALESCE() lo verás en las próximas lecciones :P
GO TO FULL VERSION