Flexform Felder in MySQL abfragen

Das Abfragen von einzelnen Flexform-Werten per MySQL Statement ist genial einfach, wenn man die Funktion „ExtractValue“ verwendet. Damit kann man direkt auf einzelne XML Werte zugreifen und Abfragen damit erstellen.
Das ist das Beispiel-XML:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
    <data>
        <sheet index="sDEF">
            <language index="lDEF">
                <field index="settings.title">
                    <value index="vDEF">Lorem Ipsum</value>
                </field>
                <field index="settings.details_link">
                    <value index="vDEF">233</value>
                </field>
            </language>
        </sheet>
        <sheet index="sTeaserBox">
            <language index="lDEF">
                <field index="settings.teaserBox_link">
                    <value index="vDEF">http://www.schmutt.com</value>
                </field>
                <field index="settings.teaserBox_buttontitel">
                    <value index="vDEF">Zur Homepage</value>
                </field>
            </language>
        </sheet>

Und dazu die MySQL Abfrage:

SELECT uid,pid,pi_flexform,ExtractValue(pi_flexform,'/T3FlexForms/data/sheet[@index="sTeaserBox"]/language/field[@index="settings.teaserBox_link"]/value') as val
FROM `tt_content`
WHERE pi_flexform LIKE '%settings.teaserBox_link%'
ORDER by val desc

Die Funktion ExtractValue ist seit MySQL 5.1.5 verfügbar:
https://dev.mysql.com/doc/refman/5.1/en/xml-functions.html

Die Syntax dazu ist XPath – hier ein gutes Tutorial:
http://www.zvon.org/xxl/XPathTutorial/General_ger/examples.html