T-sql 有一个for xml path('')的从句能把多行结果合并到一行,并成为xml 格式 比如有一张表tb有两列,其格式和数据为: id value—————1 aa1 bb2 aaa2 bbb2 ccc 如果对其执行sql: select id, value from tb for xml path('tbnode') 则返回的结果集仅为一行一列: <tbnode><id>1</id><value>aa</value><id&g…
http://blog.csdn.net/rav009/article/details/50723307 T-sql 有一个for xml path('')的从句能把多行结果合并到一行,并成为xml 格式 比如有一张表tb有两列,其格式和数据为: id value—————1 aa1 bb2 aaa2 bbb2 ccc 如果对其执行sql: select id, value from tb for xml path('tbnode') 则返回的结果集仅为一行一列: <tbnode><id…
docs.microsoft.com 链接:  SQL一个应用场景与FOR XML PATH应用 首先呢!我们在增加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好!那么现在表结构如下: 这时,我们的要求是查询学生表,显示所有学生的爱好的结果集,代码如下: SELECT B.sName,LEFT(StuList,LEN(StuList)-) as hobby FROM ( SELECT sName, (SELEC…
有时为避免循环操作数据库.列表展示等一些原因需要将数据及关联数据批量加载进行集中处理,一种解决办法可以使用FOR XML PATH将多行数据合并成一列,达到字段拼接的效果.例如有两个表, 部门表T_Dept: 员工表T_Emp: 需要查询每个部门下的员工姓名,查询语句: 1 SELECT ROW_NUMBER() OVER (ORDER BY DeptId) AS Row, DeptName 2 , LEFT(A.EmpName, LEN(A.EmpName) - 1) AS EmpName 3…
SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当然首先是要知道FOR XML PATH的语法. FOR XML PATH的简单语法 假设有一个hobby表(爱好),表中有两个字段,一个是hobbyID(爱好id),一个是hName(爱好名称). 这样,我们执行一条最简单的带FOR XML PATH子句的SQL语句,看看查询出来的结果. SELEC…
   通常我们需要在sql中拼接字符串   ,可以用for xml path() 来进行拼接,如下实例. 同时未去掉最后一个逗号可以用LEFT函数来实现.     ) AS UserName  FROM  (   SELECT B.BUGUID,          (              SELECT (                         CASE                               WHEN userName = '' THEN userName  …
在工作中难免会遇到数据库中数据要进行拼接的问题,字符串拼接可以是用SQL的拼接也可以使用C#的拼接,本次说的是使用SQL进行拼接. 首先插入测试语句: --测试语句,准备创建表的语句:如下 CREATE TABLE dbo.test3 ( id int IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED, typeid nvarchar(50) NULL, typeName nvarchar(50) NULL ); CREATE UNIQUE CLUS…
1.for xml path('str') select ID,CreateTime  from dbo.ArticleInfo for xml Path('mytitle') 结果:(注意:如果是select ID,CreateTime from dbo.ArticleInfo for xml path下面的结果中<mytitle>就变为默认的<row>) <mytitle> <ID>4</ID> <CreateTime>2015-…
由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] int,[name] varchar(2))insert into tbselect 1,'aa' union allselect 2,'bb' union allselect 1,'cc' union allselect 3,'dd' union allselect 2,'ee' select *…
[原地址] for xml path作用:将多行的查询结果,根据某一些条件合并到一行. 例:现有一张表 执行下面语句 select Department, (SELECT Employee+',' FROM People b WHERE b.Department=a.Department For XML Path('')) Student from People as a group by Department 得如下结果…
create table tb ([id] )) insert into tb ,'aa' union all ,'bb' union all ,'cc' union all ,'dd' union all ,'ee' select * from tb --查询 select id, name=stuff((,,'') from tb t group by id 方法二: CREATE FUNCTION GET_STRING(@ID INT) RETURNS VARCHAR() AS BEGIN…
,,'')) FROM Table d GROUP by Id 另外: sql 单引号转义:两个单引号转义为一个单引号 set @sql='STUFF((SELECT '','' + Names FROM Table WHERE Id = d.Id FOR xml path('''') ),1,1,'''')) FROM Table d GROUP by Id ' '' 为 '…
简单版的 SELECT a.CreateBy,Name =stuff((select ','+Name FROM SG_Client WHERE CreateBy = a.CreateBy for xml path('')),1,1,'')FROM SG_Client a group by a.CreateBy //连表查询 SELECT a.ContractID, LocationName =stuff( ( select ',' + LocationName FROM(select L.Na…
问题描述:无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数,  所以,当我们在处理下列要求时,会比较麻烦:有表tb, 如下:id    value----- ------1     aa1     bb2     aaa2     bbb2     ccc需要得到结果:id     values------ -----------1      aa,bb2      aaa,bbb,ccc即, group by id, 求 value 的和(字符串相加) 1.…
ORACLE纯SQL实现多行合并一行[转] 项目中遇到一个需求,需要将多行合并为一行.表结构如下:NAME                            Null           Type------------------------ ---------   -----N_SEC_CODE                 NOT NULL CHAR(6)C_RESEARCHER_CODE    NOT NULL VARCHAR2(20) 此表保存了“股票”与“研究员”的对应关系数据…
for xml path 用于合并与拆分 1.合并 很多时候需要在SQL Server中创建逗号分隔列表.这可以使用SQL Server的DOR XML PATH功能完成.与select语句一起使用时,FOR XML PATH生成一个xml.其示例如下所示.   1 2 3 4 5 6 DECLARE @tb TABLE(sno int identity,col1 varchar(10))   INSERT INTO @tb VALUES('a'),('b'),('c'),('d')   SEL…
需求:每个平台分类下的门店,每个门店的名称.图片路径.评分,每个门店下的四个产品的名称.图片路径.评分 思路: 一开始门店动态化好写,用Ajax就行了.但是每个门店下面的产品,每个去请求一次查询有点不太现实. 一开始准备用每个门店的Id去发起请求,被自己蠢哭了. 在换个思路用sql语句吧 同时把这么多数据一把查出来.  就是把这两张表拼成一张表,把数据作为一行数据在用符号分割,前台在取出来. WITH td AS ( SELECT Hishop_Stores.StoreId , Hishop_S…
项目中遇到一个需求,需要将多行合并为一行.表结构如下:NAME                            Null           Type------------------------   ---------   -----N_SEC_CODE                 NOT NULL  CHAR(6)C_RESEARCHER_CODE   NOT NULL  VARCHAR2(20) 此表保存了“股票”与“研究员”的对应关系数据,一般而言,对于同一只股票而言,可能有…
sql中经常需要把多个行数据合成一行下面是利用 FOR XML PATH来实现的简单介绍. 1,把图一的转换为图二: SELECT articleID, (),tagID)+',' FROM articleTag_tb FOR XML PATH('')) AS tagID FROM articleTag_tb GROUP BY articleID 以上是一个表的,下面看看多表关联的做法,其实是一样的只是连接表查询这是一个文章对应多个标签的例子三张表: CREATE TABLE [dbo].[ar…
经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法.在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例. )); ,'a') ,'b') 运行这段脚本 select UserID,UserName from @TempTable FOR XML PATH 将生成如下结果: <row> <UserID>1</UserID>  <UserName>a</U…
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“-”,“_”等看到这个要求的时候,自然而然地想到了正则表达式.于是就有了下面的表达式(写的比较龊): ^([A-Za-z0-9._()&'\- ]|[aAàÀảẢãÃáÁạẠăĂằẰẳẲẵẴắẮặẶâÂầẦẩẨẫẪấẤậẬbBcCdDđĐeEèÈẻẺẽẼéÉẹẸêÊềỀểỂễỄếẾệỆfFgGhHiIì…
本篇主要讲怎么利用SQL的FOR XML PATH 参数来进行字符串拼接,FOR XML PATH的用法很简单,它会以xml文件的形式来返回数据. 我的讲解步骤: 1:构造初始数据 2:提出问题 3:简单介绍FOR XML PATH 4:解答问题 1.构造初始数据 举出一个经典的学生课程例子,共有学生.课程与学生课程三张表. 表1:Student student_id student_name 1 张三 2 李四 3 王五 表2:Course course_id course_name 1 语言…
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回主键也可以返回别的字段看需要:inserted.id这里的id可以是其他字段就是一个字段名,比如还可以返回inserted.name INSERT INTO 表名 (字段名1,…) OUTPUT inserted.id VALUES (值1,…) 二.sql 使用 FOR XML PATH实现字符串…
一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中. 随着SQL Server 对XML字段的支持,相应的,T-…
此方法实现的是将查询表中的某个字段,格式化成  字符串1,字符串2,字符串3...的格式 假设我们现在有两个表 分别是 分组表 grouped和分组成员表 groupuser grouped表有连个字段 id ,groupname groupuser表有id,groupid,userid,username 四个字段 两个表存储的是每一个分组下,对应的成员都有谁 分组表 id groupname group1 科研小组 group2 审计小组 分组成员表 id groupid  userid  u…
=================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我 勿用于学术性引用. 勿用于商业出版.商业印刷.商业引用以及其他商业用途. 本文不定期修正完善. 本文链接:http://www.cnblogs.com/wlsandwho/p/5039358.html 耻辱墙:http://www.cnblo…
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻.现在我要介绍的FOR XML PATH的"另类"用法. 首先,我们先来看看它的正常用法.下图是我们用到的一张TEST_PERSON表: 用FOR XML PATH方法查询,SQL语句如下: SELECT * FROM TEST_PERSON FOR XML PATH 显示结果如下: 展开结果可以看到如下图: 神奇吧!!!!细心的同学会注意到这个XML文件的行节点是<row>,如果需…
通过Sql语句直接返回XML文件 select UserID,UserName,AccountName,LoginPassword from users for xml raw('Users') ,root ('User') --Users为子节点名称 User为根节点名称 生产文件格式如下 <User> <Users UserID="88103" UserName="Manager" AccountName="adminManager&…
SQL 2005引进了XML数据类型,可以直接将XML当作字符串直接存入该列. 这样可以不需要对它进行XML解析. USE AdventureWorks -- 创建一个送货排程表 CREATE TABLE Sales.DeliverySchedule (ScheduleID int IDENTITY PRIMARY KEY, ScheduleDate DateTime, DeliveryRoute int, DeliveryDriver nvarchar(20), DeliveryList xm…
sql中for xml path的用法. http://www.cnblogs.com/yanghaibo/archive/2010/06/04/1751405.html…