2011-04-26 183 views
0
--------+------------------------------------------------------- 
int  |xml 
--------+------------------------------------------------------- 
2  |<items> 
     | <item> 
     |   <description>item 21 </description> 
     | </item> 
     | <item> 
     |  <description>item 22</description> 
     | </item> 
     |</items> 
--------+------------------------------------------------------- 
3  |<items> 
     | <item> 
     |   <description>item 31 </description> 
     | </item> 
     |</items> 
--------+------------------------------------------------------- 
4  |<items> 
     | <item> 
     |   <description>item 31 </description> 
     | </item> 
     | <item> 
     |  <description>item 32</description> 
     | </item> 
     | <item> 
     |  <description>item 33</description> 
     | </item> 
     |</items> 
--------+------------------------------------------------------- 

我有一个表如在上述结构和类型, 我将其转换为结构和类型如下处理在SQL/XML转换XML为varchar

--------+------------------------------------------------------- 
int  |varhcar 
--------+------------------------------------------------------- 
2  |  item 21 
--------+------------------------------------------------------- 
2  |  item 22 
--------+------------------------------------------------------- 
3  |  item 31 
--------+------------------------------------------------------- 
4  |  item 41 
--------+------------------------------------------------------- 
4  |  item 42 
--------+------------------------------------------------------- 
4  |  item 43 
--------+------------------------------------------------------- 

任何帮助是赞赏PLZ

回答

1

试试这个:

SELECT 
    ID, 
    Item.value('(description)[1]', 'varchar(50)') AS 'DescText' 
FROM 
    dbo.YourTable 
CROSS APPLY 
    xml.nodes('/items/item') AS Node(Item) 

这应该从表中选择的ID(或INT),和从XML中获取<description>节点的所有内容。