Quando lavori con nomi, indirizzi, email o qualsiasi altro testo — quasi sempre ti serve fare una di queste cose:
- Estrarre una parte della stringa
- Scoprire la lunghezza
- Togliere spazi inutili
- Trovare/sostituire un frammento
- Formattare l'output
Per esempio, ti serve:
- Mostrare solo il cognome dal nome completo.
- Trovare studenti il cui cognome inizia con "P".
- Sostituire tutti gli spazi con underscore.
- Mostrare il cognome con la prima lettera maiuscola.
Tutte queste cose si fanno facilmente con le funzioni sulle stringhe di PostgreSQL.
LENGTH() — lunghezza della stringa
La funzione LENGTH() restituisce il numero di caratteri in una stringa.
Sintassi:
LENGTH(string)
Esempio:
SELECT name, LENGTH(name) AS name_length
FROM students;
| name | name_length |
|---|---|
| Art | 3 |
| Song | 4 |
| Pal | 3 |
Utile per controllare la lunghezza di nome e cognome, password e altri testi.
SUBSTRING() — estrarre una parte della stringa
Permette di prendere una sottostringa — tipo i primi 3 caratteri del cognome o il dominio da una email.
Sintassi:
SUBSTRING(string FROM start FOR length)
start— posizione del primo carattere (si parte da 1)length— quanti caratteri estrarre
Esempio 1: primi 3 caratteri del cognome
SELECT last_name, SUBSTRING(last_name FROM 1 FOR 3) AS prefix
FROM students;
| last_name | prefix |
|---|---|
| Song | Son |
| Pal | Pal |
Esempio 2: dominio dell'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() — togliere spazi inutili
Toglie spazi (e altri caratteri) all'inizio e/o alla fine della stringa.
Sintassi:
TRIM([LEADING | TRAILING | BOTH] chars FROM string)
Ma di solito si usa semplicemente così:
TRIM(string)
Esempio:
SELECT '[' || TRIM(' Art ') || ']' AS cleaned;
| cleaned |
|---|
| [Art] |
Fondamentale se gli utenti inseriscono dati a mano (tipo con spazi all'inizio).
POSITION() — cercare una sottostringa
Restituisce la posizione da cui parte la sottostringa.
Sintassi:
POSITION(substring IN string)
Esempio:
SELECT email, POSITION('@' IN email) AS at_position
FROM students;
| at_position | |
|---|---|
| otto@example.com | 5 |
| anna.pal@gmail.com | 9 |
Puoi usarla insieme a SUBSTRING() per estrarre parti della stringa.
REPLACE() — sostituire una sottostringa
Sostituisce tutte le occorrenze di una sottostringa con un'altra.
Sintassi:
REPLACE(string, from_substring, to_substring)
Esempio: sostituire spazi con underscore
SELECT name, REPLACE(name, ' ', '_') AS fixed_name
FROM students;
| name | fixed_name |
|---|---|
| Otto Art | Otto_Art |
| Maria Chi | Maria_Chi |
INITCAP() — prima lettera maiuscola
Trasforma la stringa così che la prima lettera di ogni parola sia maiuscola, le altre minuscole.
Sintassi:
INITCAP(string)
Esempio:
SELECT INITCAP('anna pal') AS full_name;
| full_name |
|---|
| Anna Pal |
Comodo per standardizzare nomi e cognomi.
GO TO FULL VERSION