Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment diviser une chaîne dans MySQL

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.