sqlserver多行拼接
时间: 2023-05-18 11:05:25 浏览: 683
在 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() 函数将每行数据连接在一起,并使用指定的分隔符分隔每行数据。第一个参数是要修改的字符串,第二个参数是要替换的起始位置,第三个参数是要替换的字符数,第四个参数是要插入的新字符串。在这个例子中,我们将从第一个字符开始替换两个字符(即第一个逗号和空格),并将它们替换为一个空字符串。
阅读全文