SQL Server XML格式化

最近在项目中用到了SQL Server中的XML格式化,以下作了简单的总结。
以下使用PE_C_PersonnelArea这个表来进行展示
一般我们将表中数据输出到XML,如果没有结构要求的话可以简单地使用 FOR XML AUTO
SELECT * FROM PE_C_PersonnelArea FOR XML AUTO
我们点击得到的结果就可以看到经过格式化的XML
 
 
 
 
--还有一个简单的方法就是使用 FOR XML RAW
SELECT * FROM PE_C_PersonnelArea FOR XML RAW
输出的是每行以row为节点,每列为同名的节点属性的XML
 
 
 
我们可以通过给RAW添加参数改变节点名
SELECT * FROM PE_C_PersonnelArea FOR XML RAW('Areas')
 
 
 
或者给列添加一个别名来改变节点属性名
SELECT PersonnelAreaID 'ID',PersonnelArea 'Name' FROM PE_C_PersonnelArea FOR XML RAW('Areas')
 
 
 
以上是两个方法都是较为简单得把表格式化为XML,但有时候需求会更加复杂,而简单地改变节点名和属性名是满足不了要求的。
而接下来要讲的方法就是更好得自定义XML的格式。
使用FOR XML PATH,ROOT格式化XML
SELECT * FROM PE_C_PersonnelArea FOR XML PATH
 
 
 
通过给PATH添加参数改变节点名,如果传入空值('')将去掉节点
SELECT * FROM PE_C_PersonnelArea FOR XML PATH('Areas')
 
 
 
SELECT * FROM PE_C_PersonnelArea FOR XML PATH('')
 
 
 
我们同样可以指定属性名
SELECT PersonnelAreaID '@ID',PersonnelArea '@Name' FROM PE_C_PersonnelArea FOR XML PATH('Area')
因为使用这种方法是需要按照XPath来格式化XML的,所以属性是需要加上@的哦,如果没有加上的话就会变成Area的子节点了。
SELECT PersonnelAreaID 'ID',PersonnelArea 'Name' FROM PE_C_PersonnelArea FOR XML PATH('Area')
 
 
按照XPath,我们其实可以改写成以下的样子,结果是一样的
SELECT PersonnelAreaID 'Area/@ID',PersonnelArea 'Area/@Name' FROM PE_C_PersonnelArea FOR XML PATH('')
 
 
对了,大家有没有发现一只到现在我们看到输出的XML少了根节点?我们需要在上面的基础上添加ROOT,操作如下
SELECT PersonnelAreaID '@ID',PersonnelArea '@Name' FROM PE_C_PersonnelArea FOR XML PATH('Area'),ROOT('Areas')
 
 
FOR XML PATH除了输出XML之外,还有很有意思的用法。
例如输出特殊格式
SELECT '地区分类',(SELECT '[' + PersonnelArea + ']' FROM PE_C_PersonnelArea FOR XML PATH(''))

转载于:https://my.oschina.net/venoriee/blog/385961

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值