搜索XML数据中的所有实例

时间:2015-03-10 11:02:27

标签: sql xml

我的表中有一个包含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'

1 个答案:

答案 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);