Problème :
Vous souhaitez diviser une chaîne dans MySQL.
Exemple :
Notre base de données contient une table nommée Student
avec des données dans les colonnes id
et name
.
identifiant | nom |
---|---|
1 | Ann Smith |
2 | Mark Twain |
3 | Brad Green |
Récupérons les données du nom de la colonne et divisons-les en firstname
et name
.
Solution :
Nous utiliserons le SUBSTRING_INDEX()
une fonction. Voici la requête :
SELECT SUBSTRING_INDEX(name,' ',1) AS firstname, SUBSTRING_INDEX(name,' ',-1) AS lastname FROM Student
Voici le résultat de la requête :
prénom | nom de famille |
---|---|
Anne | Smith |
Marquer | Twain |
Brad | Vert |
Discussion :
La fonction SUBSTRING_INDEX()
prend 3 arguments :la chaîne source, le délimiteur et le nombre d'occurrences du délimiteur.
La chaîne source est la chaîne que nous aimerions diviser.
Le délimiteur est une chaîne de caractères que le SUBSTRING_INDEX()
la fonction recherche dans la chaîne source. Lorsqu'il est trouvé, il indique l'endroit où se termine la sous-chaîne. Le délimiteur peut être un caractère unique tel qu'un espace, mais il peut également s'agir d'un modèle composé de deux caractères ou plus. Ce modèle est sensible à la casse ; c'est-à-dire qu'il importe que les caractères donnés soient en majuscules ou en minuscules. N'oubliez pas que le délimiteur est une chaîne, il doit donc être écrit entre guillemets ('').
Le dernier argument est le nombre d'occurrences . Il indique le nombre de fois où le modèle de délimiteur doit être mis en correspondance. Notez que le nombre d'occurrences peut être une valeur négative. Lorsqu'il est négatif, on compte les occurrences du délimiteur à partir de la droite. Lorsque le compte est un nombre positif, nous comptons à partir de la gauche.
La fonction génère chaque caractère de la chaîne source jusqu'à ce que le délimiteur corresponde au nombre de fois indiqué par le nombre d'occurrences.
Si nous exécutons la requête suivante :
SELECT SUBSTRING_INDEX('Ann Smith',' ',1);
la sortie sera :
Ann
Comme vous pouvez le voir, la fonction a renvoyé tous les caractères jusqu'à ce que le premier espace à partir de la gauche soit trouvé.
Dans notre exemple, on récupère comme prénom de l'élève tous les caractères jusqu'au premier espace en partant de la gauche et comme nom de famille de l'élève tous les caractères jusqu'au premier espace en partant de la droite.