- 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 est une fonction MySQL importante utilisée pour extraire une sous‑chaîne d’une chaîne. Avec cette fonction, vous pouvez ne récupérer que la partie dont vous avez besoin à partir des données stockées dans une base de données. Par exemple, elle est utile lorsque vous souhaitez extraire la partie domaine d’une adresse e‑mail d’un utilisateur, 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 à partir de laquelle extraire.pos: La position de départ (commence à 1).len: Le nombre de caractères à extraire (optionnel).
Si pos est une valeur positive, MySQL compte en avant depuis le début de la chaîne. Si elle est négative, MySQL compte en arrière depuis la fin de la chaîne. Si len est omis, MySQL 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 et à extraire des parties spécifiques, ce qui facilite la recherche et le traitement efficace des informations dans une base de données.
2. Utilisation de base de la fonction SUBSTRING
Pour comprendre les bases, examinons quelques exemples simples.
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 comme len vaut 6, six caractères sont extraits.
2.2 Omission du paramètre de longueur
Si vous omettez len, MySQL extrait de la position spécifiée jusqu’à la fin de la chaîne.
SELECT SUBSTRING('Hello, World!', 8);
Le résultat est "World!", qui récupère tout à partir du 8ᵉ caractère jusqu’à la fin.
2.3 Utilisation d’une position négative
Si vous utilisez une valeur négative, vous pouvez 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 concrets.
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 extrait la chaîne après le « @ » et ne renvoie que la partie domaine.
3.2 Extraction d’une partie d’un code produit
Cet exemple extrait une section spécifique d’un code produit.
SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;
Dans cette requête, 4 caractères à partir du 5ᵉ caractère du code produit sont extraits et affichés dans une nouvelle colonne nommée product_id.
3.3 Utilisation dans une sous‑requête
En la combinant avec une sous‑requête, vous pouvez extraire des données sous des conditions plus 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 description des produits dont la category est « Electronics ».

4. Comparaison avec d’autres fonctions de chaîne
D’autres fonctions pouvant être utilisées à des fins 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 souhaitez extraire une sous‑chaîne du début ou de la fin d’une chaîne.
4.2 Fonction SUBSTR
SUBSTR est un alias de SUBSTRING, il peut donc être utilisé de la même façon.
SELECT SUBSTR('Hello, World!', 8); -- "World!"
Cette requête renvoie "World!", tout comme SUBSTRING.
5. Utilisation avancée et optimisation de la fonction SUBSTRING
Cette section explique des utilisations plus avancées et des techniques d’optimisation.
5.1 Optimisation des performances
Utiliser SUBSTRING sur de grands ensembles de données peut affecter les performances. Si nécessaire, créez des index et vérifiez le plan d’exécution de la requête. De plus, si vous extrayez fréquemment la même sous‑chaîne, envisagez de mettre en cache le résultat.
5.2 L’utiliser dans une clause WHERE
Vous pouvez utiliser SUBSTRING dans une clause WHERE pour filtrer les enregistrements selon une condition de sous‑chaîne.
SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';
Cette requête recherche les produits dont les trois premiers caractères de product_code sont ‘ABC’.
6. Exemples et bonnes pratiques pour la fonction SUBSTRING
Voici des exemples pratiques d’utilisation de SUBSTRING et des bonnes pratiques pour le travail réel.
6.1 Exemple de code
L’exemple suivant sépare 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;
Dans cette requête, le prénom et le nom sont extraits d’un nom complet séparé par un espace.
6.2 Bonnes pratiques
- Extraire uniquement ce dont vous avez besoin : Gardez la longueur de la sous‑chaîne aussi petite que possible pour réduire l’impact sur les performances.
- Faire attention aux types de données : Si vous appliquez
SUBSTRINGà des données numériques, il peut être nécessaire de les convertir explicitement en chaîne. - Envisager l’utilisation des index : Lorsqu’on utilise
SUBSTRINGdans une clauseWHERE, les index peuvent ne pas être exploités efficacement, il faut donc surveiller attentivement les performances de la requête.
7. Gestion des erreurs et différences de version
Cette section couvre la gestion des erreurs lors de l’utilisation de SUBSTRING ainsi que les différences entre les versions de MySQL.
7.1 Gestion des erreurs
Si la position spécifiée est en dehors de la plage de la chaîne, SUBSTRING renvoie une chaîne vide. Comme ce n’est pas une erreur, il est recommandé d’ajouter une logique pour valider le résultat à l’avance si nécessaire.
7.2 Différences de version
Selon la version de MySQL, le comportement de la fonction SUBSTRING peut varier. Par exemple, certaines versions plus anciennes peuvent gérer les caractères multi‑octets différemment. Vérifiez la compatibilité entre les versions et appliquez les mesures appropriées si nécessaire.

