我的表中有一个包含xml数据的列。
e.g:
<Protokolldaten>
<old>
<Artikel>
<Number>111072</Number>
<Description>Ralvioli</Description>
<Term>
<To>12/12/12</To>
<From>10/10/10</From>
</Term>
</Artikel>
</old>
<newWert>
<Article>
<Number>111072</Number>
<Description>Ravioli</Description>
<Term>
<To>12/12/12</To>
<From>10/10/10</From>
<AnotherField>Ravioli</AnotherField>
</Term>
</Article>
</newWert>
</Protokolldaten>
我想找到所有馄饨的出现并列出attribut名称。但它应该只在newWert部分内搜索:
e.g。
Data | Attributename
Ravioli | Description
Ravioli | AnotherField
有人能给我一个快速入门的方法吗?我知道如何搜索特定的属性,不幸的是我不知道确切的属性,文本可以无处不在。
更新
这是一个开始,但我仍然只想搜索newWert部分:
SELECT
x.y.value('local-name(.)', 'VARCHAR(MAX)'),
x.y.value('.', 'VARCHAR(MAX)')
FROM Meldung m
CROSS apply m.Protokolldaten.nodes('//*[text()]') AS x(y)
WHERE Id = 'D81E6F2C-04C9-4F5B-9473-A45600EEA0DE'
答案 0 :(得分:0)
看起来你想要这样的东西:
select 'Ravioli' as Data,
T.X.value('local-name(..)', 'varchar(max)')
from dbo.Meldung m
cross apply m.Protokolldaten.nodes('//newWert//text()[. = "Ravioli"]') as T(X);