У меня есть несколько строк в базе данных, которые содержат элемент, который выглядит следующим образом
<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. Кто-нибудь может указать мне правильное направление?