SQL Server查询XML字段
问题描述:
我有一个表,其中包含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株系
答
您需要返回XML,然后使用类似下面的代码解析它:
StringReader stream = new StringReader(stringFromSQL);
XmlReader reader = XmlReader.Create(stream);
while (reader.Read())
{
// Do stuff
}
其中stringFromSQL
是从表中读取的整个字符串。