XML 大兴其道。文件越来越大。在SqlServer中查询检索,会使工作得心应手。
XML 大兴其道。文件越来越大。在SqlServer中查询检索,会使工作得心应手。

常用SQL:

1. 提取关心数据。以表行的形式列出。要注意的是。Xquery在解析 XML 文档里,无素内容是和关键字是区分大小写的。
None.gifcreate table #t (id int ,xm xml)
None.gifinsert into #t(id,xm)
None.gifselect 1 , * from OpenRowSet( Bulk 'D:\Program Files\StormII\config.xml', Single_Blob ) as x
None.gif--只关心 其他视频/音频文件
None.gifinsert into #t(id,xm)
None.gifselect 2,xm.query('for $f in /config/association/type[@category="其他视频/音频文件"] return $f') as result from #t
None.gif
None.gifdeclare @x xml
None.gifselect @x=xm from #t where id = 2 
None.gifinsert into #t select 3,t.c.query('.')from @x.nodes('/type/item') t(c)
None.gif
None.gifselect xm.value('(/item/@format)[1]','varchar(30)' ) as format ,xm.value('(/item/@description)[1]','varchar(30)' ) as description
None.giffrom #t where id = 3 
None.gif
None.gifgo
None.gif

2.XML中的查询。既然已经查出了表的结果集,就可以按表来操作,进行查询。如:查询 其它视频/音频文件 中包含音频的。
 
None.gifselect xm.value('(/item/@format)[1]','varchar(30)' ) as format ,xm.value('(/item/@description)[1]','varchar(30)' ) as description
None.giffrom #t where id = 3 
None.gifand xm.value('(/item/@description)[1]','varchar(30)' )  like '%音频%'
SqlServer2005 操作XML 实战_MySQL_20   作者:NewSea 

  如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。