SQL Server查询XML字段

时间:2010-06-15 12:38:43

标签: sql-server xml

我有一个表,其中包含XML字段中的一些元数据。

例如

<Meta>
    <From>tst@test.com</From>
    <To>
        <Address>testing@123.com</Address>
        <Address>2@2.com</Address>
    </To>
    <Subject>ESubject Goes Here</Subject>
</Meta>

我希望能够查询此字段以返回以下结果

From                 To                 Subject
tst@test.com         testing@123.com    Subject Goes Here
tst@test.com         2@2.com            Subject Goes Here

我写了以下查询

SELECT
    MetaData.query('data(/Meta/From)') AS [From],
    MetaData.query('data(/Meta/To/Address)') AS [To],
    MetaData.query('data(/Meta/Subject)') AS [Subject]
FROM 
    Documents 

但是,这只返回该XML字段的一条记录。它将两个地址组合成一个结果。是否有可能将这些分开记录分开?

我得到的结果是

From                 To                         Subject
tst@test.com         testing@123.com 2@2.com    Subject Goes Here

由于

GAV株系

1 个答案:

答案 0 :(得分:0)

您需要返回XML,然后使用以下代码解析它:

StringReader stream = new StringReader(stringFromSQL);
XmlReader reader = XmlReader.Create(stream);

while (reader.Read())
{
    // Do stuff
}

其中stringFromSQL是从表中读取的整个字符串。