sql xml xquery (1)

本文通过具体示例展示了如何使用 SQL Server 中的 FORXML PATH 函数来生成 XML 格式的字符串。包括创建临时表、插入数据及不同参数下 FORXML PATH 的应用效果,并给出了一种方法来构建带有自定义分隔符的列表。
DECLARE @TempTable table(UserID int , UserName nvarchar(50));   
insert into @TempTable (UserID,UserName) values (1,'a')   
insert into @TempTable (UserID,UserName) values (2,'b')   
select UserID,UserName from @TempTable FOR XML PATH

DECLARE @TempTable table(UserID int , UserName nvarchar(50));   
insert into @TempTable (UserID,UserName) values (1,'a')   
insert into @TempTable (UserID,UserName) values (2,'b')   
select UserID,UserName from @TempTable FOR XML PATH('logic')

DECLARE @TempTable table(UserID int , UserName nvarchar(50));   
insert into @TempTable (UserID,UserName) values (1,'a')   
insert into @TempTable (UserID,UserName) values (2,'b')   
select UserID,UserName from @TempTable FOR XML PATH('')

DECLARE @TempTable table(UserID int , UserName nvarchar(50));   
insert into @TempTable (UserID,UserName) values (1,'a')   
insert into @TempTable (UserID,UserName) values (2,'b') 
select CAST(UserID AS varchar) + '',UserName + '' from @TempTable FOR XML PATH('')

DECLARE @TempTable table(UserID int , UserName nvarchar(50));   
insert into @TempTable (UserID,UserName) values (1,'a')   
insert into @TempTable (UserID,UserName) values (2,'b') 
select CAST(UserID AS varchar) + ',',UserName + '',';' from @TempTable FOR XML PATH('')

DECLARE @TempTable table(UserID int , UserName nvarchar(50));   
insert into @TempTable (UserID,UserName) values (1,'a')   
insert into @TempTable (UserID,UserName) values (2,'b')   
select '{' + CAST(UserID AS varchar) + ',','"' +UserName + '"','}' from @TempTable FOR XML PATH('') 

DECLARE @T1 table(UserID int , UserName nvarchar(50),CityName nvarchar(50));   
insert into @T1 (UserID,UserName,CityName) values (1,'a','SHANGHAI')   
insert into @T1 (UserID,UserName,CityName) values (2,'b','BEIJING')   
insert into @T1 (UserID,UserName,CityName) values (3,'c','SHANGHAI')   
insert into @T1 (UserID,UserName,CityName) values (4,'d','BEIJING')   
insert into @T1 (UserID,UserName,CityName) values (5,'e','SHANGHAI')   
SELECT B.CityName,LEFT(UserList,LEN(UserList)-1) as  '用户名' FROM (   
	SELECT CityName,   
	(
		SELECT UserName+',' FROM @T1 WHERE CityName=A.CityName FOR XML PATH('')
	) AS UserList   
	FROM @T1 A    
	GROUP BY CityName   
) B    


http://blog.youkuaiyun.com/fireliangbin/article/details/7783611

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值