2010-12-09 10 views
0

Ich habe eine schnelle (hoffentlich einfache) Frage. Ich habe einige gespeicherte Information in einer MySQL-Datenbank:MySQL extrahieren Ergebnisse von Delimeter

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

Ich muß das bekommen können, eine bestimmte Menge von Informationen bilden. Stellen wir uns vor, dass sich diese Datenmenge in jedem Datensatz in einer Tabelle namens options befindet. Ich muss in der Lage sein, info3 Wert Informationen zu extrahieren, was bedeutet, dass ich (für jeden Datensatz) den "value3" Abschnitt des Datensatzes erhalten muss. Ich brauche nicht "|info3=", nur die "value3"; Der tatsächliche Wert von "value3" ist für jeden Datensatz unterschiedlich.

+1

Oh guter Gott. Müssen Sie * tatsächlich * eine Datenbank in einer Datenbank emulieren? Ich würde vorschlagen, die Zeichenfolge in eine [temporäre] Tabelle zu zerlegen (geteilt durch '|', der Teil vor '=' ist der Spaltenname) und dann mit dieser Tabelle über normales MySQL zu arbeiten. – Piskvor

+0

Die Daten sind schon da - was ich versuche ist PHP zu benutzen, um einfach einen bestimmten Wert zu bekommen und PHP eine Liste aller Datensätze damit erzeugen zu lassen. Die Hauptanwendung ist eine Erweiterung für MediaWiki, und ich versuche nur, Informationen aus einer generierten Infobox zu extrahieren. – drewrockshard

Antwort

1

Sie Frage ist einfach, in Ordnung.

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

Dies sollte tun, was Sie wollen

:

ich über die Antwort nicht das gleiche denken kann gesagt werden.

ABER, ich hoffe wirklich, dass dies nur für das Spiel ist, sonst würde ich empfehlen, dass Sie Ihr Datenbank-Design überprüfen.

+0

Was ist mit Ihrem Teiltext - die Werte sind immer unterschiedlich; Wie suche ich basierend darauf, dass ich die Werte nicht kenne (die Info # wird immer gleich sein) - nur nicht der Wert # 's. – drewrockshard

+0

Der Wert wird von der Auswahl oben zurückgegeben. Sie legen den "'info3 ='" Teil fest und erhalten den Wert für diese Information. – theMage

+0

versuchen Sie es und sehen, ob es funktioniert oder mir sagen, wie es scheitert. – theMage