Auswahl der Teil eines Feldes mit einem regex

Ich habe eine Tabelle, wo eine 3rd-party-Komponente speichert die urls, ich möchte nur die id parameter dieser url.

Mit PHP kann ich es so machen:

$subject = "index.php?option=com_content&catid=2&id=456&view=article"; //mysql query result
$pattern = '*[&?]id=([0-9]+)*'; //matches either ?id=456 or &id=456
preg_match($pattern, $subject, $matches);
echo $matches[1];//prints 456

Die Anzahl abgestimmt wäre Teil einer neuen Abfrage:

SELECT name FROM table1 WHERE id=the_match

Nun, ich denke, es wäre viel schneller direkt über mysql, so etwas wie

SELECT name FROM table1 WHERE id = (SELECT REGEX_MATCH('*[&?]id=([0-9]+)*', '$1') FROM table2 WHERE uniquefield1 = 'fred')

Offensichtlich SELECT REGEX_MATCH('*[&?]id=([0-9]+)*', '$1') FROM table2 WHERE uniquefield1 = 'fred') ist komplett erfunden, nur um zu sagen, dass ich möchten, wählen Sie die erste Gruppe abgestimmt von regex und es verwenden, um die WHERE - Klausel arbeiten.

Ist es möglich, etwas zu tun, wie dies mit MySQL?

InformationsquelleAutor BackSlash | 2013-06-30

Schreibe einen Kommentar