2016-01-25 2 views
4

Je souhaite extraire les sous-chaînes d'une chaîne dans mysql. La chaîne contient plusieurs sous-chaînes séparées par des virgules (','). J'ai besoin d'extraire ces sous-chaînes en utilisant n'importe quelle fonction mysql.Extraction de sous-chaîne Mysql à l'aide du délimiteur

Par exemple:

Table Name: Product 
----------------------------------- 
item_code name colors 
----------------------------------- 
102  ball  red,yellow,green 
104  balloon yellow,orange,red 

Je veux sélectionner le champ couleurs et extraire les sous-chaînes en rouge, jaune et vert comme séparés par des virgules.

+0

item_code, le nom et les couleurs sont les champs de la table produit et les valeurs sont nom_code nom couleurs 102 bille rouge, vert, bleu –

Répondre

6

Un double possible de ceci: Split value from one field to two

Malheureusement, MySQL ne dispose pas d'une fonction de chaîne de séparation. Comme dans le lien ci-dessus indique qu'il y a User-defined Split function.

Une version plus détaillée pour récupérer les données peuvent être les suivantes:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', 1), ',', -1) as colorfirst, 
     SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', 2), ',', -1) as colorsecond 
.... 
     SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n), ',', -1) as colornth 
    FROM product; 
+0

Si la chaîne peut contenir plusieurs nombre de sous-chaînes, que ferons-nous en code générique au lieu d'aller chercher chacun d'eux? –

+0

Dans ce cas, vous devrez peut-être créer une procédure stockée et utiliser la boucle 'for' pour itérer sur la longueur de la chaîne tokenisée par' ',' ' –

+1

Le code _above_ * * fonctionne pour moi ** quand je l'utilise dans une procédure stockée en utilisant une boucle. –

0

Vérifiez l'utilisation de la fonction SPLIT_STR here à la ligne 64 à 69