Lecciones del módulo (1/4)
Funciones de cadena
PostgreSQL tiene docenas de funciones para manipular cadenas. En esta lección
Nos fijamos en los más comunes en el trabajo real: normalización (LOWER/UPPER),
medir (LENGTH), componer (|| / CONCAT), extraer (SUBSTRING),
limpieza (TRIM), sustitución (REPLACE) y búsqueda de patrones
(CÓDIGOPH8 / CÓDIGOPH9).
Las funciones que usaremos
LOWER('Alice') -- 'alice'
UPPER('alice') -- 'ALICE'
LENGTH('alice') -- 5
'a' || 'b' -- 'ab' (concatenazione)
CONCAT('a', 'b', 'c') -- 'abc' (versione "funzione")
SUBSTRING('hello' FROM 2 FOR 3) -- 'ell'
TRIM(' alice ') -- 'alice'
REPLACE('foo bar', 'bar','x') -- 'foo x'|| es el operador SQL estándar para concatenar cadenas; CÓDIGOPH1 es
más permisivo (ignora los NULL, mientras que || los propaga:
CÓDIGOPH4 → CÓDIGOPH5).
LIKE e ILIKE: búsqueda por patrón
LIKE busca un patrón: % = cualquier secuencia, _ = una única
personaje. Distingue entre mayúsculas y minúsculas. ILIKE es el PostgreSQL
variante que no distingue entre mayúsculas y minúsculas:
WHERE name LIKE '%Cuffie%' -- match esatto "Cuffie"
WHERE name ILIKE '%cuffie%' -- match anche "CUFFIE", "Cuffie", "cuffie"
WHERE email LIKE '%@example.com'
WHERE first_name LIKE 'A_____' -- inizia per A, lungo 6 (A + 5 caratteri)Para buscar un % o _ literal dentro del patrón, use ESCAPE:
WHERE titolo LIKE '%50\%%' ESCAPE '\'; -- contiene "50%"Combinando funciones
Las funciones se componen como en cualquier idioma:
-- Email "normalizzata" e iniziali in maiuscolo:
SELECT LOWER(email) AS email_norm,
UPPER(SUBSTRING(first_name FROM 1 FOR 1)) || '.'
|| UPPER(SUBSTRING(last_name FROM 1 FOR 1)) || '.' AS iniziali
FROM customers
ORDER BY id;Pruébalo
Para cada cliente, muestre el correo electrónico en minúsculas (columna correo electrónico) y el nombre completo como 'primer nombre apellido' (columna nombre completo). Ordenar por id.
Mostrar pista
BAJAR para la primera columna, || para concatenar con un espacio en el medio.
Solución disponible después de 3 intentos
Ejercicio de revisión
Encuentre todos los productos que contengan la palabra 'portátil' (en cualquier caso) en el nombre. Mostrar solo la columna de nombre. Ordenar por nombre.
Mostrar pista
ILIKE no distingue entre mayúsculas y minúsculas. Utilice '%laptop%' para hacer coincidir 'laptop' en cualquier posición.
Solución disponible después de 3 intentos