Cuando trabajas con nombres, direcciones, emails o cualquier otro texto — casi siempre necesitas hacer una de estas cosas:
- Extraer una parte de la cadena
- Saber la longitud
- Quitar espacios de más
- Buscar/reemplazar un fragmento
- Formatear la salida
Por ejemplo, necesitas:
- Mostrar solo el apellido de un nombre completo.
- Encontrar estudiantes cuyo apellido empieza por «P».
- Reemplazar todos los espacios por guiones bajos.
- Mostrar el apellido con la primera letra en mayúscula.
Todo esto se resuelve fácil usando funciones de cadenas en PostgreSQL.
LENGTH() — longitud de la cadena
La función LENGTH() devuelve la cantidad de caracteres en una cadena.
Sintaxis:
LENGTH(string)
Ejemplo:
SELECT name, LENGTH(name) AS name_length
FROM students;
| name | name_length |
|---|---|
| Art | 3 |
| Song | 4 |
| Pal | 3 |
Útil para comprobar la longitud de nombres completos, contraseñas y otros textos.
SUBSTRING() — extraer parte de la cadena
Permite sacar una subcadena de una cadena — por ejemplo, los primeros 3 caracteres del apellido o el dominio de un email.
Sintaxis:
SUBSTRING(string FROM start FOR length)
start— posición del primer carácter (empieza en 1)length— cuántos caracteres extraer
Ejemplo 1: los primeros 3 caracteres del apellido
SELECT last_name, SUBSTRING(last_name FROM 1 FOR 3) AS prefix
FROM students;
| last_name | prefix |
|---|---|
| Song | Son |
| Pal | Pal |
Ejemplo 2: dominio del email
SELECT email, SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM students;
| domain | |
|---|---|
| otto@example.com | example.com |
| maria@gmail.com | gmail.com |
TRIM() — quitar espacios de más
Quita espacios (y otros caracteres) al principio y/o al final de la cadena.
Sintaxis:
TRIM([LEADING | TRAILING | BOTH] chars FROM string)
Pero normalmente se usa así de simple:
TRIM(string)
Ejemplo:
SELECT '[' || TRIM(' Art ') || ']' AS cleaned;
| cleaned |
|---|
| [Art] |
Es muy importante si los usuarios meten datos manualmente (por ejemplo, con espacios al principio).
POSITION() — buscar subcadena
Devuelve la posición donde empieza la subcadena.
Sintaxis:
POSITION(substring IN string)
Ejemplo:
SELECT email, POSITION('@' IN email) AS at_position
FROM students;
| at_position | |
|---|---|
| otto@example.com | 5 |
| anna.pal@gmail.com | 9 |
Puedes usarlo junto con SUBSTRING() para extraer partes de la cadena.
REPLACE() — reemplazar subcadena
Reemplaza todas las apariciones de una subcadena por otra.
Sintaxis:
REPLACE(string, from_substring, to_substring)
Ejemplo: reemplazar espacios por guiones bajos
SELECT name, REPLACE(name, ' ', '_') AS fixed_name
FROM students;
| name | fixed_name |
|---|---|
| Otto Art | Otto_Art |
| Maria Chi | Maria_Chi |
INITCAP() — primera letra en mayúscula
Convierte la cadena para que la primera letra de cada palabra sea mayúscula y las demás minúsculas.
Sintaxis:
INITCAP(string)
Ejemplo:
SELECT INITCAP('anna pal') AS full_name;
| full_name |
|---|
| Anna Pal |
Muy útil para estandarizar nombres completos.
GO TO FULL VERSION