Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Techniques informatiques

Alternative au SPLIT en MySQL

Créé le 15/10/2020 , dern. modif. le 15/10/2020

Le SGBDR MySQL ne dispose pas de méthode similaire à Split (Java) ou Explode (PHP) permettant d'extraire une liste d'éléments depuis une chaîne contenant un séparateur particulier. Typiquement, extraire la chaîne "b" depuis "a;b;c".

Cependant, la fonction SUBSTRING_INDEX (chaîne, séparateur, compteur) peut être utilisée pour pallier ce manque.

Présentation de Substring_index

SUBSTRING_INDEX extrait une partie de chaîne du début de la chaîne jusqu'au nombre d'éléments indiqué. Quelques exemples :

SELECT SUBSTRING_INDEX('a;b;c', ';', 1)

renverra 'a'

SELECT SUBSTRING_INDEX('a;b;c', ';', 2)

renverra 'a;b'

SELECT SUBSTRING_INDEX('a;b;c', ';', 3)

renverra 'a;b;c'

Le 3ème paramètre, le compteur, utilise une valeur positive pour la recherche de gauche à droite et une valeur négative pour une recherche de droite à gauche.

SELECT SUBSTRING_INDEX('a;b;c', ';', -1)

renverra 'c'

SELECT SUBSTRING_INDEX('a;b;c', ';', -2)

renverra 'b;c'

SELECT SUBSTRING_INDEX('a;b;c', ';', -3)

renverra 'a;b;c'

Solution pour extraire un élément d'une chaîne délimitée

L'astuce consiste à combiner 2 appels à cette fonction. Deux possibilités :

  • Soit en appelant une première fois avec un nombre positif pour mettre en bout de chaîne la valeur à retenir et une seconde fois avec la position -1
  • Soit en appelant avec une position négative puis une position 1.

Par exemple, pour extraire le "b" en 2ème position, on peut faire :

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a;b;c', ';', 2) , ';', -1)

ou

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a;b;c', ';', -2) , ';', 1)
Attention : si la position demandée n'est pas trouvée dans la chaîne, MySQL renvoie toute la chaîne.
Quillevere.net

Commentaires

Aucune inscription n'est requise si vous souhaitez

Rechercher sur le site

fr en rss RSS info Informations