2011-01-13 58 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 

因爲它是一個元素,而不是一個屬性。