Quand tu bosses avec des noms, adresses, emails ou n'importe quel autre texte — tu dois presque toujours faire l'une de ces deux choses :
- Extraire une partie de la chaîne
- Connaître la longueur
- Nettoyer les espaces en trop
- Trouver/remplacer un fragment
- Formater l'affichage
Par exemple, tu dois :
- Afficher juste le nom de famille à partir du nom complet.
- Trouver les étudiants dont le nom de famille commence par « P ».
- Remplacer tous les espaces par des underscores.
- Afficher le nom de famille avec une majuscule.
Tout ça, c'est super simple à faire avec les fonctions de chaînes de PostgreSQL.
LENGTH() — longueur de la chaîne
La fonction LENGTH() te donne le nombre de caractères dans une chaîne.
Syntaxe :
LENGTH(string)
Exemple :
SELECT name, LENGTH(name) AS name_length
FROM students;
| name | name_length |
|---|---|
| Art | 3 |
| Song | 4 |
| Pal | 3 |
Pratique pour vérifier la longueur d'un nom complet, d'un mot de passe ou d'autres textes.
SUBSTRING() — extraire une partie de la chaîne
Permet de choper une sous-chaîne — genre, les 3 premières lettres du nom de famille ou le domaine d'un email.
Syntaxe :
SUBSTRING(string FROM start FOR length)
start— position du premier caractère (ça commence à 1)length— combien de caractères tu veux extraire
Exemple 1 : les 3 premières lettres du nom de famille
SELECT last_name, SUBSTRING(last_name FROM 1 FOR 3) AS prefix
FROM students;
| last_name | prefix |
|---|---|
| Song | Son |
| Pal | Pal |
Exemple 2 : domaine de l'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() — enlever les espaces en trop
Enlève les espaces (et d'autres caractères) au début et/ou à la fin d'une chaîne.
Syntaxe :
TRIM([LEADING | TRAILING | BOTH] chars FROM string)
Mais le plus souvent, tu l'utilises juste comme ça :
TRIM(string)
Exemple :
SELECT '[' || TRIM(' Art ') || ']' AS cleaned;
| cleaned |
|---|
| [Art] |
C'est super important si les utilisateurs saisissent les données à la main (genre, avec des espaces au début).
POSITION() — chercher une sous-chaîne
Renvoie la position où commence la sous-chaîne.
Syntaxe :
POSITION(substring IN string)
Exemple :
SELECT email, POSITION('@' IN email) AS at_position
FROM students;
| at_position | |
|---|---|
| otto@example.com | 5 |
| anna.pal@gmail.com | 9 |
Tu peux l'utiliser avec SUBSTRING() pour extraire des parties de chaîne.
REPLACE() — remplacer une sous-chaîne
Remplace toutes les occurrences d'une sous-chaîne par une autre.
Syntaxe :
REPLACE(string, from_substring, to_substring)
Exemple : remplacer les espaces par des underscores
SELECT name, REPLACE(name, ' ', '_') AS fixed_name
FROM students;
| name | fixed_name |
|---|---|
| Otto Art | Otto_Art |
| Maria Chi | Maria_Chi |
INITCAP() — première lettre en majuscule
Transforme la chaîne pour que la première lettre de chaque mot soit en majuscule, les autres en minuscules.
Syntaxe :
INITCAP(string)
Exemple :
SELECT INITCAP('anna pal') AS full_name;
| full_name |
|---|
| Anna Pal |
Pratique pour standardiser les noms complets.
GO TO FULL VERSION