sqlserver 字符串一行拆分成多行
时间: 2023-07-25 10:31:09 浏览: 165
Sqlserver长字符串拆分为多行 高效
5星 · 资源好评率100%
在 SQL Server 中,可以使用一些字符串函数和子查询来将一个字符串拆分成多行。以下是一个可能的解决方案:
假设有一个名为 `example` 的表,其中包含一个名为 `str` 的字符串列,需要将其中的字符串按照某种规则拆分成多行。可以使用以下查询来实现:
```
SELECT SUBSTRING(str, n, CHARINDEX(',', str + ',', n) - n) AS split_str
FROM (
SELECT str, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS n
FROM example
) t
WHERE n <= LEN(str) + 1
AND SUBSTRING(',' + str, n, 1) = ','
```
这个查询的思路是先将原始字符串 `str` 和行号 `n` 组成一个子查询 `t`,然后在外部查询中使用 `SUBSTRING` 和 `CHARINDEX` 函数来按照逗号进行拆分。具体来说,`SUBSTRING(str, n, CHARINDEX(',', str + ',', n) - n)` 表示从字符串 `str` 的第 `n` 个字符开始,截取到下一个逗号之前的子串。为了处理最后一个子串,需要在 `where` 子句中添加 `n <= LEN(str) + 1` 条件,并且需要在 `str` 前面添加一个逗号,即 `',' + str`。
需要注意的是,这个查询只能处理逗号分隔的字符串。如果需要处理其他分隔符或者多个分隔符的情况,需要对查询进行相应的修改。
阅读全文