sql server多行数据拼接的实例方法

网络编程 2025-03-24 16:20www.168986.cn编程入门

在 SQL Server 中,有时我们需要将多行数据拼接成一个字段。下面是一个具体的实例方法,需要的朋友可以参考一下。

假设我们有一个表 T,其结构如下:

```plaintext

id type productCode

-

1 铅笔 0001

2 铅笔 0002

3 铅笔 0003

4 钢笔 0004

5 钢笔 0005

6 钢笔 0004

7 圆珠笔 0007

8 圆珠笔 0008

9 圆珠笔 0007

```

这个表记录了各种产品的类型和产品编码。我们的目标是基于产品类型,将同一类型的多个产品编码拼接成一个字符串。下面是具体的实现步骤:

自定义函数:我们可以创建一个自定义函数 `fun` 来实现这个功能。代码如下:

```sql

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

Create function [dbo].[fun](@type nvarchar(10))

returns nvarchar(200) as

begin

declare @re nvarchar(200) = '' -- 用于存储拼接结果的变量

select @re=@re+productCode+',' from T where type=@type group by productCode -- 将同一类型的编码拼接起来,中间用逗号分隔

select @re=left(@re, len(@re)-1) -- 去掉最后一个逗号

return @re -- 返回拼接结果

end

```

查询语句:使用这个自定义函数进行查询,可以得到如下结果:

钢笔: 0004,0005, 铅笔: 0001, 铅笔: 0002, 铅笔: 0003,圆珠笔: 0007, 圆珠笔: 0008。这样我们就成功地将同一类型的多个产品编码拼接成了一个字符串。具体操作如下:`select type, dbo.fun(type) from (select distinct type from T) A`。查询的结果就是按类型分类的产品编码列表。每一行的第一个字段是类型,第二个字段是该类型下的所有产品编码拼接成的字符串。通过这种方式,我们可以方便地获取到每种类型下的所有产品编码,方便后续的处理和分析。请注意,如果表中有大量的数据,需要注意SQL语句的性能优化和数据库资源的使用情况。

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by