sqlserver行转列用逗号隔开
时间: 2023-08-15 19:08:54 浏览: 143
如果你想把一行数据转换为逗号隔开的列,可以使用 SQL Server 中的 STUFF 和 FOR XML PATH 函数。例如,假设你有一个名为 MyTable 的表,其中有一个名为 MyColumn 的文本列,你可以使用以下查询:
```
SELECT STUFF((SELECT ',' + MyColumn FROM MyTable FOR XML PATH('')), 1, 1, '')
```
这将返回 MyTable 表中的所有 MyColumn 值,以逗号隔开的形式。请注意,STUFF 函数用于删除第一个字符,因为它是不必要的逗号。
相关问题
sqlserver 按列A分类,行转列用逗号隔开
如果你想根据某个列 A 进行分组,并将每个分组的其它列的值转换为逗号分隔的列表,可以使用 SQL Server 中的 FOR XML PATH 和 STUFF 函数。假设你有一个名为 MyTable 的表,其中有列 A、B 和 C,你可以使用以下查询:
```
SELECT A, STUFF((SELECT ', ' + B + ' - ' + C FROM MyTable WHERE A = t.A FOR XML PATH('')), 1, 2, '') AS BC_List
FROM MyTable t
GROUP BY A
```
这将返回一个结果集,其中每行代表一个分组,列 A 包含分组的值,列 BC_List 包含该分组中所有 B 和 C 值的逗号分隔列表。请注意,STUFF 函数用于删除第一个字符,因为它是不必要的逗号和空格。
sql server 将字段值以逗号隔开
可以使用 `FOR XML PATH` 子句来将 SQL Server 中的字段值以逗号隔开。以下是一个示例查询,它将 `person` 表中的所有 `name` 字段值以逗号隔开,然后将结果作为一个字符串返回:
```sql
SELECT
STUFF((
SELECT ',' + name
FROM person
FOR XML PATH('')
), 1, 1, '') AS names
```
在这个查询中,`STUFF` 函数用于删除第一个逗号,因为 `FOR XML PATH` 子句会将每个值用逗号分隔开,包括第一个值。因此需要使用 `STUFF` 函数将第一个逗号删除。最终的结果将会是一个字符串,其中所有的 `name` 字段值都用逗号隔开。
请注意,如果 `name` 字段中包含 XML 敏感字符如 `<`、`>`、`&` 等,则需要使用 `REPLACE` 函数将这些字符替换成对应的实体编码。例如:
```sql
SELECT
STUFF((
SELECT ',' + REPLACE(name, '&', '&')
FROM person
FOR XML PATH('')
), 1, 1, '') AS names
```
阅读全文