Fonctions de Chaînes

Manipuler et transformer du texte avec SQL

25 min
DEBUTANT
Objectifs de cette leçon
  • Maîtriser les fonctions de manipulation de texte (UPPER, LOWER, INITCAP)
  • Extraire des parties de chaînes avec SUBSTR
  • Utiliser LENGTH pour mesurer la longueur des chaînes
  • Concaténer des chaînes avec CONCAT et ||
  • Nettoyer les données avec TRIM, LTRIM, RTRIM
  • Rechercher et remplacer avec INSTR et REPLACE
  • Combiner plusieurs fonctions pour des transformations complexes

Les Fonctions de Chaînes de Caractères

Les fonctions de chaînes permettent de manipuler et transformer du texte. Elles sont essentielles pour formater les données, rechercher des patterns, ou extraire des informations spécifiques.

Principales Fonctions de Chaînes

1. UPPER et LOWER - Conversion de Casse

SELECT UPPER(nom) AS nom_majuscules,
       LOWER(prenom) AS prenom_minuscules
FROM EMPLOYES;

UPPER convertit en majuscules, LOWER en minuscules.

2. INITCAP - Capitalisation

SELECT INITCAP(nom) AS nom_formate
FROM EMPLOYES;

Convertit la première lettre de chaque mot en majuscule.

3. SUBSTR - Extraction de Sous-Chaînes

SELECT SUBSTR(nom, 1, 3) AS trois_premieres_lettres,
       SUBSTR(email, 1, INSTR(email, '@') - 1) AS username
FROM EMPLOYES;

SUBSTR(chaîne, position, longueur) extrait une partie d'une chaîne.

4. LENGTH - Longueur d'une Chaîne

SELECT nom, LENGTH(nom) AS longueur_nom
FROM EMPLOYES
WHERE LENGTH(nom) > 8;

5. CONCAT et || - Concaténation

SELECT CONCAT(prenom, ' ', nom) AS nom_complet,
       prenom || ' ' || nom AS nom_complet2
FROM EMPLOYES;

6. TRIM, LTRIM, RTRIM - Suppression d'Espaces

SELECT TRIM('  texte  ') AS sans_espaces,
       LTRIM('  gauche') AS sans_espace_gauche,
       RTRIM('droite  ') AS sans_espace_droite
FROM DUAL;

7. REPLACE - Remplacement de Caractères

SELECT nom,
       REPLACE(email, '@company.com', '@newdomain.com') AS nouveau_email
FROM EMPLOYES;

8. INSTR - Position d'une Sous-Chaîne

SELECT email,
       INSTR(email, '@') AS position_arobase
FROM EMPLOYES;
Bonne pratique : Utilisez UPPER ou LOWER dans les comparaisons pour éviter les problèmes de casse : WHERE UPPER(nom) = 'DUPONT' trouvera "Dupont", "DUPONT" et "dupont".

Combinaison de Fonctions

-- Formater un nom complet en majuscules avec initiales
SELECT UPPER(SUBSTR(prenom, 1, 1) || '. ' || nom) AS nom_formate
FROM EMPLOYES;

-- Extraire le domaine d'un email
SELECT SUBSTR(email, INSTR(email, '@') + 1) AS domaine
FROM EMPLOYES;
Attention : En Oracle, la position commence à 1 (pas à 0 comme dans certains langages). SUBSTR('HELLO', 1, 2) retourne 'HE'.
Exemples de code
Formater les noms des employés

Utilise plusieurs fonctions de chaînes pour formater les noms de différentes manières. UPPER met tout en majuscules, INITCAP capitalise chaque mot, et CONCAT assemble prénom et nom.

Résultat attendu : Affiche les employés du département 10 avec nom en majuscules, prénom avec première lettre en capitale, et nom complet

Extraire le domaine des emails

Combine SUBSTR et INSTR pour découper un email. INSTR trouve la position du @, SUBSTR extrait avant et après cette position. LENGTH compte le nombre de caractères.

Résultat attendu : Sépare chaque email en nom d'utilisateur et domaine, et affiche la longueur totale
Exercices pratiques
Exercice 1 : Initiales des employés
FACILE
Affichez les 3 premières lettres du nom de chaque employé en majuscules, ainsi que la longueur totale de leur nom. Triez par longueur décroissante.
Voir l'indice
Utilisez SUBSTR pour extraire les 3 premiers caractères, UPPER pour les mettre en majuscules, et LENGTH pour la longueur.

Exercice 2 : Formatter le nom complet
MOYEN
Créez une colonne affichant le nom complet au format "NOM, Prénom" (nom en majuscules, prénom avec initiale en capitale) pour tous les employés dont le nom contient plus de 5 lettres.
Voir l'indice
Combinez UPPER, INITCAP, l'opérateur de concaténation || et la fonction LENGTH dans une clause WHERE.
Accueil