2011-01-13 4 views
0

ich ein paar Zeilen in einer Datenbank, die alle ein Element enthalten, die wie folgtWert auf ein Feld in XML XQuery mit passender

<ModuleData ModuleFieldGU="4dcdde21-40c6-4d1a-9fe1-1841935d3a68"> 
<DateTime>0001-01-01T00:00:00</DateTime> 
<Boolean>false</Boolean> 
<Int>0</Int> 
<Varchar>Test District</Varchar> 
<GUID>00000000-0000-0000-0000-000000000000</GUID> 
<Modified>true</Modified> 
</ModuleData> 

ich über all diese und Spiel suchen müssen sieht, wo Das varchar-Element/node wird auf einen bestimmten Wert gesetzt.

Ich habe sowohl das followuing versucht, und weder scheint für mich

SELECT 
    Data.Element.value('(@Varchar)[1]', 'varchar(255)') as UserEmail 
    FROM 
     ModuleData 
    CROSS APPLY 
     XML_DATA.nodes('/ModuleData') AS Data(Element) 
    WHERE 
    Data.Element.value('(@Varchar)[1]', 'varchar(255)') = @UserEmail 

und

SELECT 
    CAST(XML_DATA.query('data(/ModuleData[@Varchar])') as varchar(255)) as UserEmail 
FROM 
    ModuleData 
WHERE 
    XML_DATA.exist('/ModuleData[@Varchar = sql:variable("@UserEmail")]') = 1 

aber zu funktionieren nicht funktioniert. Ich bin nicht wirklich auf dem Laufenden mit den Feinheiten der Verwendung von XQuery, um Daten aus XML zu erhalten. Kann mir jemand in die richtige Richtung zeigen?

Antwort

0

Das sollte korrekt XPath sein:

/ModuleData/Varchar 

Weil es ein Element ist, kein Attribut.