sqlserver 字符串转成表
时间: 2024-09-26 11:13:54 浏览: 40
SQL Server 中将字符串转换为表格,通常是指将单行数据拆分成多行,这可以使用 `STRING_SPLIT` 函数配合 `UNION ALL` 或 `PIVOT` 来实现。`STRING_SPLIT` 函数可以将一个包含逗号分隔值(CSV)的字符串分割成一行一行的数据。
例如,如果你有一个名为 `example_string` 的列,其内容类似于 "A,B,C,D", 你可以这样做:
```sql
DECLARE @example_string VARCHAR(MAX) = 'A,B,C,D'
;
WITH SplitStrings AS (
SELECT value AS Item
FROM STRING_SPLIT(@example_string, ',')
)
SELECT *
FROM SplitStrings
```
这将返回一个表,每个元素都在单独的一行上:
| Item |
|------|
| A |
| B |
| C |
| D |
如果你想将这个数据变成一个更结构化的表格,比如每列对应原始字符串的一个部分,可以使用 `PIVOT` 或者手动编写 `UNION ALL` 语句。但是请注意,`PIVOT` 只适用于静态的列列表,如果字段数不确定,可能会有局限性。
```sql
-- 使用PIVOT示例
SELECT *
FROM (
SELECT Item
FROM SplitStrings
) SourceTable
PIVOT (
MAX(Item)
FOR Item IN ([A], [B], [C], [D])
) AS PivotTable
```
阅读全文