Saltar al contenido principal
eLearner.app
Módulo 6 · Lección 1 de 421/57 en el curso~12 min
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

SQL
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:

SQL
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:

SQL
WHERE titolo LIKE '%50\%%' ESCAPE '\';   -- contiene "50%"

Combinando funciones

Las funciones se componen como en cualquier idioma:

SQL
-- 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

Ejercicio#sql.m6.l1.e1
Intentos: 0Cargando...

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.

Cargando editor...
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

Ejercicio#sql.m6.l1.e2
Intentos: 0Cargando...

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.

Cargando editor...
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