关于SQL Server中的xml path的简单用法
以下部分是常规的以行形式(纵向)展现的数据:
SELECT cast(r.xmbm AS VARCHAR(20)) + ','
FROM ryk AS r WHERE r.subUnitCode IN('A46041','A46130','A46194','A46207') ORDER BY r.xmbm
有时我们需要数据横向展示,比如SQL语句中的IN列表中的数据,此时需要这些数据”横”过来。只需增加FOR XML PATH('')即可,如下:
SELECT cast(r.xmbm AS VARCHAR(20)) + ',' FROM ryk AS r WHERE r.subUnitCode IN('A46041','A46130','A46194','A46207') ORDER BY r.xmbm FOR XML PATH('')
此语句会在SQL Management Studio中生成一个带有链接的xml文件格式:
看起来不太像xml文件,那是因为此句的FOR XML PATH('')中设置的xml标签为空串,设置成你需要的属性,就是一个合格的xml文件中的数据格式,试试这个效果:
SELECT cast(r.xmbm AS VARCHAR(20)) + ',' FROM ryk AS r WHERE r.subUnitCode IN('A46041','A46130','A46194','A46207') ORDER BY r.xmbm FOR XML PATH('personid')
但在此例中,我们不需要这个属性,所以设置为空串。
如果点击这个链接,会在一个新窗口中展示它的文本,就得到了我们想要的数据。
也可以使用以下语句:
SELECT ( SELECT cast(r.xmbm AS VARCHAR(20)) + ',' FROM ryk AS r WHERE r.subUnitCode IN('A46041','A46130','A46194','A46207') ORDER BY r.xmbm FOR XML PATH('') )
可以直接得到需要的结果