2010-06-15 7 views
0

У меня есть таблица, которая содержит некоторые метаданные в поле XML.SQL Server Querying 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 

Благодаря

Гав

ответ

0

Вы должны вернуть XML, а затем разобрать его, используя что-то вроде следующего кода:

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

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

Где stringFromSQL - вся строка, указанная в таблице.