sqlserver 根据逗号将一行数据分成多行数据
时间: 2024-10-19 15:06:23 浏览: 22
在SQL Server中,如果你想根据某个分隔符(如逗号)将一行数据分割成多行,可以使用`STRING_SPLIT`函数或者自定义递归查询。以下是两个示例:
**1. 使用`STRING_SPLIT`函数**(从SQL Server 2016开始支持):
```sql
SELECT value
FROM STRING_SPLIT('字段1,字段2,字段3', ',')
```
这会返回一个结果集,每行一个字段。
**2. 自定义递归查询(如果版本较低,无`STRING_SPLIT`)**:
```sql
WITH RECURSIVE SplitData(str, result) AS
(
SELECT value, value AS Result
FROM (VALUES ('字段1,字段2,字段3')) AS Data(str)
UNION ALL
SELECT LEFT(Data.str, CHARINDEX(',', Data.str + ',') - 1), result + ',' + RIGHT(Data.str, LEN(Data.str) - CHARINDEX(',', Data.str))
FROM SplitData
JOIN (VALUES ('', Data.str)) AS Data(str) ON CharIndex(',', str) > 0
)
SELECT * FROM SplitData WHERE Result NOT LIKE '%,%'
```
这个查询通过递归地分割字符串,直到找到没有更多逗号的位置。
**
阅读全文