sqlsever 将一行中使用逗号分隔符的值拆分成多行
时间: 2024-11-03 11:22:45 浏览: 6
在SQL Server中,当你需要将一行数据中以特定字符(如逗号)分隔的值转换成多行记录时,可以使用`STRING_SPLIT`函数或自定义递归查询。`STRING_SPLIT`是SQL Server 2016及以上版本引入的一个方便功能,它是一个内置的表值函数,用于将字符串分割成一系列行。
例如,假设有一个名为`MyTable`的表,其中有一个列`Values`存储了逗号分隔的字符串:
```sql
CREATE TABLE MyTable (
ID INT,
Values VARCHAR(MAX)
);
INSERT INTO MyTable (ID, Values) VALUES (1, 'Value1,Value2,Value3');
```
你可以使用`STRING_SPLIT`函数来拆分这个值:
```sql
SELECT ID, value
FROM MyTable
CROSS APPLY STRING_SPLIT(Values, ',')
```
这将会返回:
```sql
ID | value
----|------
1 | Value1
1 | Value2
1 | Value3
```
如果你正在使用早于SQL Server 2016的版本,可以考虑使用自定义递归查询或者临时表来达到同样的效果,但这会稍微复杂一些。
阅读全文