2010-06-15 137 views
0

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

例如

<Meta> 
    <From>[email protected]</From> 
    <To> 
     <Address>[email protected]</Address> 
     <Address>[email protected]</Address> 
    </To> 
    <Subject>ESubject Goes Here</Subject> 
</Meta> 

我希望再能查询这个字段返回下面的结果

From     To     Subject 
[email protected]   [email protected] Subject Goes Here 
[email protected]   [email protected]   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 
[email protected]   [email protected] [email protected] Subject Goes Here 

感谢

GAV株系

回答

0

您需要返回XML,然后使用类似下面的代码解析它:

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

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

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