SQL Server2005 使用FOR XML选项进行字符串的串联聚合
使用FOR XML查询选项的PATH模式,可以用于字符串的串联聚合,并且可以很方便地组织聚合后的文本描述。
先看看下面的节选:
(
select top 10 [lt_username],(
select CAST(n2.room as nvarchar(128) )+':'+CAST(n2.point as nvarchar(8))+',' as [text()]
from [newbbspoints] n2
where n2.lt_username = n1.lt_username
order by n2.point desc
for xml path('')
) as [Description]
from dbo.[newbbspoints] as n1
)
select [lt_username], stuff([Description], Len([Description]), 1, '') as [Description] from arg1
使用for xml path('')提供了一个空字符串作为输入,所以未产生包装器(wrapper)元素,
通过CAST(n2.room as nvarchar(128) )+':'+CAST(n2.point as nvarchar(8))+','
可以利用各列的数据来串联出此字段的描述。
其中使用stuff截取最后一个生成的分割符','
以下的例子利用一个已在存在表的数据去更新另外一下表,更新的字段内容为第一个表的两个字段的字符串串联。
drop table dbo.BBSPoints
if object_id('dbo.CJB_Temp') is not null
drop table dbo.CJB_Temp;
create table dbo.BBSPoints
(
lt_username nvarchar(20) not null,
room nvarchar(128) not null,
point int
)
insert into dbo.BBSPoints(lt_username,room,point) values(N'zdg',N'社区支持',2734);
insert into dbo.BBSPoints(lt_username,room,point) values(N'zdg',N'扩充话题',2734);
insert into dbo.BBSPoints(lt_username,room,point) values(N'billok',N'产品/厂家',654);
insert into dbo.BBSPoints(lt_username,room,point) values(N'billok',N'MS-SQL Server',45);
insert into dbo.BBSPoints(lt_username,room,point) values(N'junbiaochen',N'C#',785);
insert into dbo.BBSPoints(lt_username,room,point) values(N'junbiaochen',N'asp.net',265);
create table dbo.CJB_Temp
(
UserName nvarchar(20) not null primary key,
Title nvarchar(256)
)
insert into dbo.CJB_Temp(UserName,Title) values(N'zdg',N'');
insert into dbo.CJB_Temp(UserName,Title) values(N'billok',N'');
insert into dbo.CJB_Temp(UserName,Title) values(N'junbiaochen',N'');
with arg1 as
(
select [lt_username],(
select CAST(n2.room as nvarchar(128) )+':'+CAST(n2.point as nvarchar(8))+',' as [text()]
from dbo.[BBSPoints] n2
where n2.lt_username = n1.lt_username
order by n2.point desc
for xml path('')
) as [Description]
from dbo.[BBSPoints] as n1
)
,arg2 as
(
select [lt_username], stuff([Description], len([Description]), 1, '') as [Description] from arg1
)
update t
set [Title] = a2.[Description]
from dbo.[CJB_Temp] t
join arg2 a2 on a2.[lt_username] = t.[UserName]
select * from dbo.[CJB_Temp];
drop table dbo.[BBSPoints];
drop table dbo.[CJB_Temp];
转载于:https://www.cnblogs.com/chenjunbiao/archive/2008/08/19/1760203.html
SQL Server2005 使用FOR XML选项进行字符串的串联聚合相关推荐
- 转: 利用SQL SERVER2005的XML字段类型实现类似商品扩展属性
今天自己翻了两页自己的BLOG,发现真是越来越懒了,已经好长时间没有写技术相关的日志了,记得刚开始写BLOG的时候还经常写写自己的技术积累的,现在除了发布ZJ-BLOG的程序更新信息外,好像全成了自己 ...
- SQL Server2005 日期字段与字符串比较的怪异问题
遇到了这样一个怪异问题. SQL Server2005数据库里有一个表,表中有一个DateTime类型的字段CreateDate. 如果在SQL语句里写 where CreateDate <= ...
- Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
sql server2005新增加了2大数据类型: 1.大值数据类型 2.xml 1.大值数据类型 Microsoft SQL Server 2005 中引入了 max 说明符.此说明符增强了 var ...
- sql server2005 无法修改表,超时时间已到 在操作完成之前超时时
在sql server2005 中,在修改表时,保存的时候显示:无法修改表,超时时间已到 在操作完成之前超时时间已过或服务器未响应 这是执行时间设置过短的原因,可以修改一下设置便能把执行时间加长,以 ...
- java与sql2005连接数据库_Java链接数据库SQl Server2005
Java链接数据库SQL Server2005步骤: 1.到微软官方网站下载2005的jdbc并解压,获得文件sqljdbc.jar.本人使用的是sqljdbc_1.2,解压后即为该文件. sql j ...
- 使用WCF传输DataTable:DataTable和Xml格式的字符串相互转换(C#)
背景:项目中要用到客户端向服务端传数据,使用WCF,绑定webHttpBinding,做了一个小例子. 业务逻辑简介:客户端在a表中添加了几条数据,从SQL Server数据库直接取出新添加的数据(D ...
- SQL Server2005如何进行数据库定期备份(转)
SQLServer2005的定期备份是通过创建"维护计划"来实现的.主要有两种方式:1.维护计划向导.2.新建维护计划(用户手工创建) 如果想在SQLServer2005中使用维护 ...
- sql server中对xml进行操作
一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...
- Sql Server2005对t-sql的增强之Cross Apply
Sql Server2005对t-sql的增强之Cross Apply Cross Apply使表可以和表值函数结果进行join,在下面的示例中建了两个表和一个表值函数,T_b的列a_ids中会存放a ...
最新文章
- Request请求用Cookie记录SessionId
- matlab为曲线下面积上色
- 如何检查字符串是否为空?
- python进阶(小白也能看懂)——装饰器浅谈(一)
- 1003. 检查替换后的词是否有效
- LCT模板(无讲解)
- iOS开发 - iOS10隐私数据访问问题
- 为什么戏说php,PHP语言之戏说PHP框架的味道
- 一步一步使用阿里云容器服务部署基于.NET的JEXUS网站 (转)
- QGIS教程02---QGIS加载数据的4种方法
- 四川多多开店:拼多多如何检查聊天记录
- excel自动调整列宽_Excel教程:A股上了3000点,来张股市涨跌图
- int数据超出范围的值变化
- 三维尺寸链计算和公差分析软件-DTAS-功能
- Angular CLI简介
- 基于CentOS7操作cobbler批量装机-(centos7和redhat8)
- 记录下如何用vue实现PC端网易云轮播图效果
- 计算机毕业设计Java城市智能公交系统(源码+系统+mysql数据库+lw文档)
- cass光标大小怎么调_CAD如何调整十字光标和靶框大小
- 网页如何与小程序交互通信