sql的自拼接,多行变一行

个表A,两个字段ID,name,个ID可能对应多name,要求根据个ID查询出对应的name,但是不是以多行的形式显示出来,而是以个行的形式出来,多个name以,分割。
比如 数据 
i name
1 a
1 b
1 c
应该查询来的结果是; [a,b,c 1]
sql是这样写的

DECLARE @names varchar(1000);
SET @names = '';
SELECT @names=@names+ISNULL(name, '')+',' 
FROM A
WHERE id = 1;
select @names;

用的是sql的所谓自拼接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server 中,可以使用 FOR XML PATH() 语句来实现多行拼接。具体步骤如下: 1. 使用 SELECT 语句查询需要拼接的数据,并使用 FOR XML PATH() 语句将每行数据转换为 XML 格式。 2. 在 FOR XML PATH() 语句中指定一个标签名称,该标签将用于将每行数据包装在其中。 3. 使用 STUFF() 函数将每行数据连接在一起,并使用指定的分隔符分隔每行数据。 下面是一个示例: 假设有一个名为 Students 的表,其中包含以下数据: | ID | Name | Age | |----|--------|-----| | 1 | Alice | 20 | | 2 | Bob | 22 | | 3 | Charlie| 21 | 现在需要将所有学生的姓名连接在一起,以逗号分隔。可以使用以下 SQL 语句: ``` SELECT STUFF((SELECT ', ' + Name FROM Students FOR XML PATH('')), 1, 2, '') AS Names ``` 该语句将返回以下结果: | Names | |-----------------------| | Alice, Bob, Charlie | 解释: 1. SELECT ', ' + Name FROM Students FOR XML PATH('') 将每行数据转换为 XML 格式,并使用逗号分隔每行数据。 2. FOR XML PATH('') 指定一个空标签名称,将每行数据包装在其中。 3. STUFF() 函数将每行数据连接在一起,并使用指定的分隔符分隔每行数据。第一个参数是要修改的字符串,第二个参数是要替换的起始位置,第三个参数是要替换的字符数,第四个参数是要插入的新字符串。在这个例子中,我们将从第一个字符开始替换两个字符(即第一个逗号和空格),并将它们替换为一个空字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值