关于SQL Server 中字符串的合并

SQL中字符串拼接方法(MySQL,SQLServer) 1 SQLServer (1)直接用+号实现字符串pinj select '123'+'456'; (2)用concat内置函数 select concat('123','456'); 2 MySQL 阅读详情

 体会:

  1. 在子查询中,使用聚合函数和 FOR XML PATH('')来确保返回记录是一条。
  2. 去重用DISTINCT 和GROUP BY.


 

if

not object_id('Tab') is null

drop table Tab

Go

Create

table Tab([Col1] int,[Col2] nvarchar(1))

Insert

Tab

select

1,N'a' union all

select

1,N'b' union all

select

1,N'c' union all

select

2,N'd' union all

select

2,N'e' union all

select

3,N'f'

Go

SELECT

* FROM Tab;

GO

/******************************************************

Expected Result:

1 a,b,c

2 d,e

3 f

or

1 abc

2 de

3 f

*******************************************************/

/***********************Use XML Method*****************/

--Method 0:

SELECT

Col1

,

Col2=STUFF(

(SELECT ','+Col2 FROM Tab t WHERE t.Col1=Tab.Col1 FOR XML PATH(''))

,1,1,'' )

FROM

Tab

GROUP

BY Col1

GO

SELECT

Col1,Col2=(SELECT ''+Col2 FROM Tab t WHERE t.Col1=Tab.Col1 FOR XML PATH(''))

FROM

Tab

GROUP

BY Col1

 

--Method 1:

select

a

.Col1,Col2=stuff(b.Col2.value('/R[1]','nvarchar(max)'),1,1,'')

from

(select distinct COl1 from Tab) a

Cross

apply

(select COl2=(select N','+Col2 from Tab where Col1=a.COl1 For XML PATH(''), ROOT('R'), TYPE))b

--Method 2:

select

a

.Col1,COl2=replace(b.Col2.value('/Tab[1]','nvarchar(max)'),char(44)+char(32),char(44))

from

(select distinct COl1 from Tab) a

cross

apply

(select Col2=(select COl2 from Tab where COl1=a.COl1 FOR XML AUTO, TYPE)

.query('<Tab>

{for $i in /Tab[position()<last()]/@COl2 return concat(string($i),",")}

{concat("",string(/Tab[last()]/@COl2))}

</Tab>'

)

)b

 

/*********************Use CTE ******************************/

with

roy

as

(

select Col1,Col2,row=row_number()over(partition by COl1 order by COl1)

from Tab

)

,

Roy2 as

(

select COl1,cast(COl2 as nvarchar(100))COl2,row

from Roy where row=1

union all

select a.Col1,cast(b.COl2+','+a.COl2 as nvarchar(100)),a.row

from Roy a join Roy2 b on a.COl1=b.COl1 and a.row=b.row+1

)

select

Col1,Col2

from

Roy2 a

where

row=(select max(row) from roy where Col1=a.COl1)

order by Col1 option (MAXRECURSION 0)

/********************Use Case*******************************/

SELECT

COl1,

COl2

=''+

CASE

WHEN COUNT(*)=1 THEN CAST(MAX(COl2) as varchar)

ELSE (

SELECT ''+ Col2 FROM Tab t WHERE t.Col1=Tab.Col1 FOR XML PATH('')

)

END

FROM

Tab

GROUP

BY COl1
sql自定义函数分组合并字符串列 sql自定义函数,用于合并字符串列,可以在分组的情况下对varchar类型的字段合并 立即下载

相关推荐

sql 多行合并某一列字符串拼接的示例

sql 多行合并某一列字符串拼接的示例语句

sqlserver字符串拼接

本文主要介绍了sqlserver字符串拼接的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。

weixin_41565034的博客 2991

Sql函数 将列合并成一串字符串

Sql函数 将列合并成一串字符串 从此以后,本人上传的资源全部免费下载,以便大家互相学习. 往前上传的资源有些设置了下载分,如需要请联系QQ:285679784,免费获取

如何在 SQL Server 中将多行文本连接成单个文本字符串

考虑一个包含名称的数据库表,其中包含三行:有没有一种简单的方法可以把它变成一个 Peter, Paul, Mary 字符串?

HuntsBot的博客 1661

光耦继电器电路分析

光耦电路的分析笔记

MingYue_SSS的博客 6881

Xlinx PG151 除法器IP 笔记

对Xlinx 除法器IP PG151中部分内容记录备忘。

weixin_50515160的博客 2528

SQL-SERVER的STUFF函数——group by 分组,字符串合并

SQL SERVER 分组group by之后,字符串合并在一起,逗号隔开。 原本数据: 效果: 代码: -use DB01; -- 建表 create table dbo.tb_user_product( id int null ,name varchar(10) null ,product varchar(100) null ,amount decimal(9,2) null ); -- 插入数据 insert into dbo.tb_user_product values ('

不才伟才的博客 1万+

从0到1:.NET 9 OpenAPI全攻略!Swagger vs Scalar UI谁更强?

OpenAPI:.NET 9的智能文档革命 本文深入解析.NET 9的OpenAPI支持,对比Swagger UI与Scalar UI的优劣,提供实战代码示例: 一键生成:AddOpenApi()+MapOpenApi()快速生成标准文档 UI工具对决: Swagger UI功能全面但复杂 Scalar UI简约现代,原生支持cURL/HTTPie 进阶技巧: XML注释增强文档可读性 自定义Transformer实现文档动态修改 🔥核心价值:.NET 9的OpenAPI方案显著降低API文档维护成本,开

java专栏 1428

SQL按某字段合并字符串之一(简单合并)(转)

*标题:按某字段合并字符串之一(简单合并)作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)时间:2008-11-06地点:广东深圳描述:将如下形式的数据按id字段合并value字段。id    value----- ------1     aa1     bb2     aaa2     bbb2     ccc需要得到结果:id     value------ -----------1 

Jason's Word 1570

《QMT量化实战系列》支持自定义筛选与排序的多因子策略,实测年化收益超100% (1)

公众号推出《QMT量化实战》系列,通过多维度、多策略、多场景讲解QMT量化平台应用,每期附代码解读。本期复现《支持自定义筛选与排序的多因子策略》,策略包含三大核心模块:1. 通过Tushare获取30+财务因子数据;2. 提供灵活筛选机制(支持排除ST股、次新股及特定板块);3. 创新性多因子加权排序系统(支持自定义因子权重组合)。交易逻辑包含动态调仓机制,当持仓标的排名低于阈值时触发卖出。该策略具有高度可配置性,适合不同风险偏好的投资者。(149字)

qq_46262068的博客 1730

高通平台开发系列讲解(系统篇)系统关机流程

📢本篇章主要图解高通平台系统关机流程。

内核笔记 3212

Sql Server中Group By后字符串合并

转载于:https://www.cnblogs.com/willingtolove/p/9320513.html 【SQL】SqlServer中Group By后,字符串合并 目录 1、传统方法:创建处理函数(sql server 2000只能用该方法) 2、新的解决方法:利用for xml path(sql server 2005及更高版本) 正文 参考: 1、SQL查询语...

taoerchun的专栏 9725

分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信

🔥 分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信

XiaoqiangClub的博客 477

SQL Server 如何合并组内字符串

就是在SQL SERVER实现类似MYSQL中group_concat函数的功能,把分组中的字串拼接起来。SQL Server 2017可以用STRING_AGG函数实现,比如SELECT G, STRING_AGG(S, ',') FROM T GROUP BY G(按表T的G字段分组,组内S字段拼接起来); 但2016版没有STRING_AGG函数,就会麻烦很多: SELECT p2.G, SS = JSON_VALUE( REPLACE( (SELE...

rqgxy的博客 660

【C2000系列DSP的Bootloader详解】如何利用脚本自动合并Bin文件

本文通过OutconvertBin.py实现了 C2000 Bootloader+UserApp 的「ELF 转 BIN+BIN 合并」全流程自动化,核心优势如下: 架构适配:严格遵循 C28x 16 位大端格式,生成的 BIN 文件可直接烧录; 自动化程度高:一键完成清理、转换、合并,无需手动执行多个命令; 可追溯性:生成 CRC32 校验值,便于验证文件完整性; 量产友好:合并后的merged.bin支持一次性烧录,提升量产效率。

昔时扬尘处 183

“双系统”出炉!瑞芯微RK3562J非对称AMP:Linux+RTOS/裸机

执行如下命令运行Linux应用程序rpmsg_echo,发送8个rpmsg数据包至运行Baremetal程序的Cortex-M0核心,当Cortex-M0核心每收到1个rpmsg数据包就会将数据包发送回Linux端。开发者可灵活分配任务或指定核心间通信,从而增强系统稳定性,减少崩溃风险,保障数据完整。下文以Cortex-A53(CPU0、CPU1、CPU2、CPU3)核心运行Linux系统与rpmsg_echo应用程序,Cortex-M0(MCU)核心运行Baremetal程序为例进行演示。

创龙,嵌入式一体化解决方案商 468

[sql server] 合并字符串

/* 标题:按某字段合并字符串之一(简单合并) 作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 时间:2008-11-06 地点:广东深圳 描述:将如下形式的数据按id字段合并value字段。 id value ----- ------ 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到结果: id value ------ ----------- 1 aa,bb 2 aaa,bbb,ccc 即:group by id, 求 value 的和(字符串相加) */ --1、sql2000中

永生天地 8753

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SQL-SERVER的STUFF函数group by 分组,字符串合并

SQL SERVER 分组group by之后,字符串合并在一起,逗号隔开。 原本数据: 效果: 代码: -use DB01; -- 建表 create table dbo.tb_user_product( id int null ,name varchar(10) null ,product varchar(100) null ,amount decimal(9,2) null ); -- 插入数据 insert into dbo.tb_user_product values ('

疯流人物 4210

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Sql Server中三种字符串合并方法的性能比较

最近正在处理一个合并字符吕的存储过程,在一个测试系统的开发中,要使用到字符串合并功能,直接在Sql中做。 示例: 有表內容﹕ 名称 內容 1 abc 1 aaa 1 dddd 2 1223 2 fkdjfd ...

weixin_30471561的博客 126

SQL Server 字符串合并

应用场景:多条数据某列数据以某种样式合并成一条数据,例如: 1 1,0 小赵 0012 2,0 小钱 002 =====》 小赵(001),小钱(002),小李(004)4 4,0 小李 004 1、首先建立简化模型:假设老王有四个邻居,赵钱...

weixin_30609331的博客 243
上一篇: How to: Encrypt a Column of Data
下一篇: 让IIS支持PHP的配置方法
confei
博客等级 码龄20年 18粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值