关于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('')
        )

 

 

 可以直接得到需要的结果

 

posted @ 2022-12-19 22:32  火军刀  阅读(1009)  评论(0编辑  收藏  举报