2011-01-13 47 views
0

我在所有包含如下所示使用XQuery

<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> 

我需要在所有的这些搭配在哪里看的元素数据库中的一堆行的XML匹配的值到现场varchar元素/节点被设置为某个值。

我都试过了followuing的,既不似乎是为我工作

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 

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 

,但它无法正常工作。我没有真正了解使用XQuery从XML中获取数据的细节。任何人都可以指出我正确的方向吗?

回答

0

正确的XPath应该是:

/ModuleData/Varchar 

因为它是一个元素,而不是一个属性。