代码之家  ›  专栏  ›  技术社区  ›  Gavin

SQL Server查询XML字段

  •  0
  • Gavin  · 技术社区  · 15 年前

    我有一个在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 回复  |  直到 15 年前
        1
  •  0
  •   ChrisF    15 年前

    您需要返回XML,然后使用以下代码对其进行解析:

    StringReader stream = new StringReader(stringFromSQL);
    XmlReader reader = XmlReader.Create(stream);
    
    while (reader.Read())
    {
        // Do stuff
    }
    

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