`

转:SQL Server中将多行数据拼接为一行数据(一个字符串)

阅读更多

转载链接:http://blog.csdn.net/kula_dkj/article/details/8568599

 

方法一: 使用T-SQL

 DECLARE @Users NVARCHAR(MAX);
SET @Users = '';
SELECT @Users = @Users + ',' + UserName FROM dbo.[User];
WHERE RoleID = 1;
SELECT @Users;
 转载自:http://www.fengfly.com/plus/view-172336-1.html

方法二:使用for xml path('') 和stuff

--使用 自连接、for xml path('')和stuff合并显示多行数据到一行中

--注
--1、计算列可以不用包含在聚合函数中而直接显示,如下面语句的val。
--2、for xml path('') 应该应用于语句的最后面,继而生成xml。
--3、for xml path('root')中的path参数是生成的xml最顶级节点。
--4、字段名或是别名将成为xml的子节点,对于没有列名(字段+'')或是没有别名的字段将直接显示。如[value] +','则是用,分隔的数据(aa,bb,)。
--5、对于合并多行数据显示为一行数据时使用自连。

--生成测试表并插入测试数据
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go

--第一种显示
select id, [val]=(
select [value] +',' from tb as b where b.id = a.id for xml path('')) from tb as a
--第一种显示结果
--1	aa,bb,
--1	aa,bb,
--2	aaa,bbb,ccc,
--2	aaa,bbb,ccc,
--2	aaa,bbb,ccc,


--第二种显示
select id, [val]=(
select [value] +',' from tb as b where b.id = a.id for xml path('')) from tb as a
group by id
--第二种显示结果
--1	aa,bb,
--2	aaa,bbb,ccc,


--第三种显示
select id, [val]=stuff((
select ','+[value] from tb as b where b.id = a.id for xml path('')),1,1,'') from tb as a
group by id
--第三种显示结果
--1	aa,bb
--2	aaa,bbb,ccc


--典型应用
--AMD_GiftNew中获取所有的管理员ID
select adminIds = stuff((select ','+cast(UserId as varchar) from MM_Users where RoleId = 1 and flag =0 for xml path('')),1,1,'')
--典型应用显示结果
--3,27

 
分享到:
评论

相关推荐

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    sql server 2008 将一列值转换成一个字符串

    在SQL Server 2008中,将一列值转换为一个字符串是一个常见的需求,特别是在进行数据汇总或生成报告时。本篇文章将详细介绍如何利用SQL Server 2008中的功能来实现这一需求,并深入探讨背后的原理和技术要点。 ### ...

    Oracle字段转字符串/多行记录合并/连接/聚合字符串的几种方法

    `LISTAGG()`是Oracle 11g引入的一个聚合函数,用于将多行数据合并为一个字符串,特别适合于分组查询。它允许指定分隔符: ```sql SELECT column1, LISTAGG(column2, ', ') WITHIN GROUP (ORDER BY column2) FROM...

    sql-varbinary转换成字符串

    通过本文的学习,我们了解了如何在SQL Server中将`varbinary`类型数据转换为字符串表示的方法。这种方法不仅适用于简单的数据查看,也适用于需要进一步处理的场景。掌握了这一技能后,我们可以更加灵活地处理各种...

    SQL Server中将查询结果转换为Json格式脚本分享

    这个存储过程接受一个参数`@ParameterSQL`,该参数是一个包含SQL查询的字符串。脚本首先构建了一个SQL语句,使用`FOR XML RAW, TYPE, ELEMENTS`将查询结果转换为XML格式。然后,它执行这个SQL语句并将结果存储到XML...

    Sql批量操作数据

    通过将多个数据项拼接成一个字符串,然后在存储过程中进行拆分来实现批量插入。 - **优点:** - 实现简单。 - **缺点:** - 效率低下:与技术方案一相似,仍然是逐条插入。 - 可维护性差:代码不易扩展和...

    sql中将数字转换为字符串—STR().doc

    `STR()`函数就是SQL Server提供的一个用于将浮点型数据转换为固定长度的字符型数据的方法之一。本文将详细介绍`STR()`函数的用法及其注意事项。 #### 二、`STR()`函数的基本概念 `STR()`函数是SQL Server中用于将...

    在Sql Server 数据库中利用存储过程实现动态交叉表

    在数据库管理与开发领域,SQL Server作为一个广泛应用的数据库系统,提供了强大的存储过程功能,允许开发者在数据库层面执行复杂的逻辑操作。存储过程是存储在SQL Server中的预编译的SQL代码块,它可以通过调用执行...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...

    华师在线数据库应用作业及答案.pdf

    2. 字符串拼接:在SQL中,使用加号"+"可以拼接字符串。例如,表达式'123' + '456'的结果是'123456'。 3. 运算符:题目中提到的用于将多个查询结果合并为一个结果集合的运算符可能是UNION,它用于合并两个或更多...

    oracle中将列拼接字段函数

    `WMSYS.WM_CONCAT`函数是Oracle提供的一个用于字符串拼接的强大工具。与SQL中的`||`运算符不同的是,`WM_CONCAT`可以接受多个参数并将它们连接起来形成一个单一的字符串,特别适用于需要合并多个列值的情况。此函数...

    详解MySQL中concat函数的用法(连接字符串)

    另外,MySQL还提供了一个`GROUP_CONCAT`函数,它用于在分组查询中将相同组内的多行数据合并为一个字符串,通常用于聚合操作。`GROUP_CONCAT`的语法如下: ```sql GROUP_CONCAT([DISTINCT] 字段 [ORDER BY 排序字段]...

    MySQL拼接字符串函数GROUP_CONCAT详解

    MySQL中的GROUP_CONCAT函数是一个非常实用的聚合函数,主要用于在分组查询中将同一组内的多个值合并为一个字符串,通常用于数据汇总和报告。它能够处理非NULL值,并且可以进行排序、去重和自定义分隔符,极大地提高...

    MySQL中将一列以逗号分隔的值行转列的实现

    即一列中存储了多个属性值。如下表 pk value 1 ET,AT 2 AT,BT 3 AT,DT 4 DT,CT,AT 一般有这两种常见需求(测试数据见文末) 1.得到所有的不重复的值,如 value AT BT CT DT ET SQL...

    Mysql字符串处理函数详细介绍、总结

    MySQL中的字符串处理函数是数据库操作中非常重要的工具,它们允许我们对存储的数据进行各种操作,如拼接、截取、转换、查找等。以下是对这些函数的详细解释: 1. ASCII(char):此函数返回字符的ASCII码值,即字符...

    oracle中将小写金额转换为大写金额函数

    接下来,通过循环遍历每个字符并根据规则构建大写金额字符串: 1. **处理零**:如果当前字符为零,则根据上下文决定是否添加“零”字。 2. **处理非零字符**:对于非零字符,根据其位置和数值查找对应的中文数字和...

    labview操作sqlite读、写数据库

    例如,创建一个名为"Employees"的表,包含"ID"、"Name"和"Position"字段,SQL命令可能如下: ```sql CREATE TABLE Employees (ID INTEGER PRIMARY KEY, Name TEXT, Position TEXT); ``` 读取数据通常通过"执行SQL...

    orcal函数详情介绍

    INITCAP函数用于返回一个字符串,并将该字符串的首字母转换为大写。这是格式化文本数据时的一个常用操作。 **语法**: ```sql INITCAP(string_expr) ``` **示例**: ```sql SELECT INITCAP('smith') AS "Initial ...

    Asp.Net .txt文件导入数据库

    `StreamReader`可以从一个流中读取字符,并将其转换为字符串。在Asp.Net中,首先创建`StreamReader`对象,指定要读取的文件路径,例如: ```csharp using (StreamReader reader = new StreamReader("导入.txt")) ...

Global site tag (gtag.js) - Google Analytics