2010-12-09 31 views
0

J'ai une question rapide (j'espère simple). J'ai des informations stockées dans une base de données MySQL:MySQL extrait les résultats par délimiteur

|info1=value1 
|info2=value2 
|info3=value3 
|info4=value4 
|info5=value5 
|info6=value6 

Je dois être en mesure d'obtenir un certain ensemble d'informations forment ce. Supposons que cet ensemble de données se trouve dans chaque enregistrement d'une table appelée options. Je dois être en mesure d'extraire des informations de valeur info3, ce qui signifie que je dois (pour chaque enregistrement) a reçu la section "value3" de l'enregistrement. Je n'ai pas besoin de "|info3=", juste le "value3"; la valeur réelle de "value3" est différente pour chaque enregistrement.

+1

Oh mon Dieu. Avez-vous vraiment * besoin * d'émuler une base de données dans une base de données? Je suggère d'analyser la chaîne dans une table [temporaire] (divisée par '|', la partie avant '=' est le nom de la colonne), puis de travailler avec cette table via MySQL normal. – Piskvor

+0

Les données sont déjà là - ce que j'essaie de faire est d'utiliser PHP pour simplement saisir une certaine valeur et laisser PHP générer une liste de tous les enregistrements avec ceci. L'application de base est une extension pour MediaWiki, et j'essaie juste d'extraire des informations d'une infobox générée. – drewrockshard

Répondre

1

Votre question est simple, d'accord.

Je ne pense pas que la même chose peut être dit au sujet de la réponse:

select substring_index(
    substring_index(
     old_text 
     ,'info3=',-1),'|',1) 
from mw_text; 

Cela devrait faire ce que vous voulez. MAIS, j'espère vraiment que c'est juste pour jouer, sinon, je vous recommande de revoir votre conception de base de données.

+0

Qu'en est-il de votre texte de sous-chaîne - les valeurs sont toujours différentes; Comment puis-je effectuer une recherche sur la base de ne pas connaître les valeurs (l'info # sera toujours la même) - mais pas la valeur de #. – drewrockshard

+0

la valeur est ce qui est retourné par le select ci-dessus. Vous définissez la partie "'info3 ='" et obtenez la valeur pour cette information. – theMage

+0

l'essayer et voir si cela fonctionne ou me dire comment il échoue. – theMage