我在数据库中有一堆行,这些行都包含一个类似于以下内容的元素
<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>
我需要查看所有这些并匹配varchar元素/节点设置为某个值的位置。
我已经尝试了以下两种情况,似乎都不适合我
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 :(得分:0)
正确的XPath应该是:
/ModuleData/Varchar
因为它是一个元素,而不是一个属性。