- 1 1. Qu’est‑ce que la fonction SUBSTRING ?
- 2 2. Utilisation de base de la fonction SUBSTRING
- 3 3. Applications pratiques de la fonction SUBSTRING
- 4 4. Comparaison avec d’autres fonctions de chaîne
- 5 5. Utilisation avancée et optimisation de la fonction SUBSTRING
- 6 6. Exemples et bonnes pratiques pour la fonction SUBSTRING
- 7 7. Gestion des erreurs et différences de version
1. Qu’est‑ce que la fonction SUBSTRING ?
La fonction SUBSTRING dans MySQL est un outil essentiel pour extraire une partie d’une chaîne. Avec cette fonction, vous pouvez récupérer uniquement la partie nécessaire des données d’une base de données. Par exemple, elle est utile pour extraire le domaine d’une adresse e‑mail ou récupérer une section spécifique d’un code produit.
1.1 Syntaxe de base
La syntaxe de base de la fonction SUBSTRING est la suivante :
SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
str: La chaîne cible à extraire.pos: La position de départ (indice à partir de 1).len: Le nombre de caractères à extraire (optionnel).
Si pos est positif, il compte à partir du début de la chaîne. S’il est négatif, il compte à partir de la fin. Si len est omis, la fonction extrait de la position spécifiée jusqu’à la fin de la chaîne.
1.2 Cas d’utilisation de la fonction SUBSTRING
Cette fonction sert à formater les données textuelles ou à extraire des parties spécifiques, rendant la récupération et le traitement des données dans les bases de données plus efficaces.
2. Utilisation de base de la fonction SUBSTRING
Examinons un exemple simple pour comprendre son fonctionnement.
2.1 Extraction d’une partie d’une chaîne
La requête suivante extrait 6 caractères à partir du 3ᵉ caractère de la chaîne « Hello, World! ».
SELECT SUBSTRING('Hello, World!', 3, 6);
Le résultat est « llo, W ». Comme pos vaut 3, l’extraction commence au 3ᵉ caractère, et avec len fixé à 6, 6 caractères sont récupérés.
2.2 Omission de la longueur
Si vous omettez len, la fonction extraira de la position spécifiée jusqu’à la fin de la chaîne.
SELECT SUBSTRING('Hello, World!', 8);
Le résultat est « World! », à partir du 8ᵉ caractère jusqu’à la fin.
2.3 Position négative
Utiliser une valeur négative permet de spécifier la position depuis la fin de la chaîne.
SELECT SUBSTRING('Hello, World!', -5);
Cette requête renvoie « orld! », en extrayant les 5 derniers caractères.
3. Applications pratiques de la fonction SUBSTRING
La fonction SUBSTRING est fréquemment utilisée dans des opérations de données réelles. Voici quelques exemples.
3.1 Extraction du domaine d’une adresse e‑mail
En combinant SUBSTRING avec LOCATE, vous pouvez extraire la partie domaine d’une adresse e‑mail.
SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;
Cette requête récupère la chaîne située après le symbole « @ », vous ne conservant que la partie domaine.
3.2 Extraction d’une partie d’un code produit
Voici un exemple d’extraction d’une partie spécifique d’un code produit.
SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;
Cette requête extrait 4 caractères à partir du 5ᵉ caractère du code produit et les affiche dans une nouvelle colonne product_id.
3.3 Utilisation avec des sous‑requêtes
La combiner avec des sous‑requêtes permet d’extraire des données sous des conditions complexes.
SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;
Cette requête extrait les 10 premiers caractères de la colonne description des produits dont la category est « Electronics ».

4. Comparaison avec d’autres fonctions de chaîne
D’autres fonctions aux objectifs similaires à SUBSTRING incluent LEFT, RIGHT et SUBSTR.
4.1 Fonctions LEFT et RIGHT
LEFT(str, len): Récupère le nombre spécifié de caractères depuis le début de la chaîne.RIGHT(str, len): Récupère le nombre spécifié de caractères depuis la fin de la chaîne.
SELECT LEFT('Hello, World!', 5); -- "Hello"
SELECT RIGHT('Hello, World!', 6); -- "World!"
Ces fonctions sont pratiques lorsque vous devez extraire une portion d’une chaîne depuis une extrémité précise.
4.2 Fonction SUBSTR
SUBSTR est un alias de SUBSTRING et peut être utilisé de la même manière.
SELECT SUBSTR('Hello, World!', 8); -- "World!"
Cette requête renvoie « World! », exactement comme le ferait SUBSTRING.
5. Utilisation avancée et optimisation de la fonction SUBSTRING
Voici comment utiliser SUBSTRING de manière plus efficace et optimiser ses performances.
5.1 Optimisation des performances
L’utilisation de SUBSTRING sur de grands ensembles de données peut affecter les performances. Envisagez de créer des index et de vérifier le plan d’exécution de la requête si nécessaire. Si vous extrayez fréquemment la même sous‑chaîne, la mise en cache des résultats peut également aider.
5.2 Utilisation dans la clause WHERE
Vous pouvez utiliser SUBSTRING dans une clause WHERE pour rechercher en fonction d’une partie d’une chaîne.
SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';
Cette requête récupère les produits dont le product_code commence par ‘ABC’.
6. Exemples et bonnes pratiques pour la fonction SUBSTRING
Voici des exemples pratiques et des bonnes pratiques pour l’utilisation de SUBSTRING.
6.1 Exemple de code
L’exemple suivant divise le nom complet d’un client en prénom et nom de famille.
SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;
Cette requête extrait le prénom et le nom de famille d’un nom complet séparé par un espace.
6.2 Bonnes pratiques
- Extraction minimale : N’extraire que ce qui est nécessaire avec
SUBSTRINGafin de minimiser l’impact sur les performances. - Faire attention au type de données : Lors de l’application de
SUBSTRINGà des données numériques, les convertir explicitement en chaîne d’abord. - Considérations d’index : L’utilisation de
SUBSTRINGdans une clauseWHEREpeut empêcher l’utilisation des index, il faut donc vérifier les performances de votre requête.
7. Gestion des erreurs et différences de version
Passons en revue la gestion des erreurs et les différences de comportement de SUBSTRING selon les versions de MySQL.
7.1 Gestion des erreurs
Si la position spécifiée dans SUBSTRING est en dehors de la plage de la chaîne, elle renvoie une chaîne vide. Comme ce n’est pas une erreur, il est recommandé d’ajouter une logique pour vérifier les résultats au préalable.
7.2 Différences de version
Selon votre version de MySQL, le comportement de SUBSTRING peut varier. Par exemple, certaines versions plus anciennes gèrent les caractères multioctets différemment. Vérifiez la compatibilité entre les versions et appliquez les mesures appropriées si nécessaire.


