2010-06-15 162 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是從表中讀取的整個字符串。