前几天一个小活,基于性能考虑到使用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转换为了我们常用的数据表,并且可以轻松的使用它来为我们服务。比起传统的到客户端再解析,简直方便多了
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。