前几天一个小活,基于性能考虑到使用Sqlserver2008中用XQuery的方式来解析XML数据,
?
感觉相当不错。
?
Declare @XMLData xml
Set @XMLData = '<source> ?????<student id="001" name="张三"> ???????<语文>1</语文> ???????<数学>2</数学> ???????<地理>3</地理> ???????<生物>4</生物> ???????<物理>5</物理> ???????<化学>6</化学> ?????</student> ?????<student id="002" name="李四"> ???????<语文>101</语文> ???????<数学>2</数学> ???????<地理>3</地理> ???????<生物>4</生物> ???????<物理>5</物理> ???????<化学>6</化学> ?????</student> ?????<student id="003" name="王五"> ???????<语文>102</语文> ???????<数学>2</数学> ???????<地理>3</地理> ???????<生物>4</生物> ???????<物理>5</物理> ???????<化学>6</化学> ?????</student> ?????<student id="005" name="黑六"> ???????<语文>103</语文> ???????<数学>2</数学> ???????<地理>3</地理> ???????<生物>4</生物> ???????<物理>5</物理> ???????<化学>6</化学> ?????</student> ????</source>'
Select ???? c.value('../@id','varchar(50)') as '学号',CONVERT( varchar(50),c.query('fn:local-name(.)') ) as '科目',c.query('text()') ) as '成绩' From @XMLData.nodes('source/*/*') as t(c)
?
?
SELECT @XMLData.query('for $s in //source/student/* return <student><Subject key="{local-name($s)}"></Subject></student>')
?
?
这样轻松就把一个多维的XML转换为了我们常用的数据表,并且可以轻松的使用它来为我们服务。比起传统的到客户端再解析,简直方便多了
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|