如何按 space 个字符拆分 SQL 中的字符串
How to split a string in TSQL by space character
我在 TSQL 中有一项艰巨的任务,我似乎找不到简单的方法来完成。我正在尝试使用 CROSS APPLY STRING_SPLIT(sentence, ' '),但我只能得到该方法的一个词。你能帮忙吗?谢谢。
例句:
- 我需要使用 TSQL 拆分字符串。
- 这种方法是传统的,并且在 SQL 服务器的所有版本中都受支持。
想要的答案:
- 我需要
- 拆分
- 个字符串使用
- TSQL.
想要的答案:
- 这种方法
- 传统
- ,以及
- 支持
- 总共
- 版本和
- 个版本
- SQL 服务器。
给你:
首先向任何逗号添加一个 space(您希望将逗号视为单词),然后使用一些 Json 将每个 space 上的字符串拆分为行,然后分配使用 modulo 和 lag over() 对每一行进行分组,然后根据组进行聚合:
declare @s varchar(100)='This approach is traditional, and is supported in all versions and editions of SQL Server';
select Result = String_Agg(string,' ') within group (order by seq)
from (
select j.[value] string, Iif(j.[key] % 2 = 1, Lag(seq) over(order by seq) ,seq) gp, seq
from OpenJson(Concat('["',replace(Replace(@s,',',' ,'), ' ', '","'), '"]')) j
cross apply(values(Convert(tinyint,j.[key])))x(seq)
)x
group by gp;
结果:
我在 TSQL 中有一项艰巨的任务,我似乎找不到简单的方法来完成。我正在尝试使用 CROSS APPLY STRING_SPLIT(sentence, ' '),但我只能得到该方法的一个词。你能帮忙吗?谢谢。
例句:
- 我需要使用 TSQL 拆分字符串。
- 这种方法是传统的,并且在 SQL 服务器的所有版本中都受支持。
想要的答案:
- 我需要
- 拆分
- 个字符串使用
- TSQL.
想要的答案:
- 这种方法
- 传统
- ,以及
- 支持
- 总共
- 版本和
- 个版本
- SQL 服务器。
给你:
首先向任何逗号添加一个 space(您希望将逗号视为单词),然后使用一些 Json 将每个 space 上的字符串拆分为行,然后分配使用 modulo 和 lag over() 对每一行进行分组,然后根据组进行聚合:
declare @s varchar(100)='This approach is traditional, and is supported in all versions and editions of SQL Server';
select Result = String_Agg(string,' ') within group (order by seq)
from (
select j.[value] string, Iif(j.[key] % 2 = 1, Lag(seq) over(order by seq) ,seq) gp, seq
from OpenJson(Concat('["',replace(Replace(@s,',',' ,'), ' ', '","'), '"]')) j
cross apply(values(Convert(tinyint,j.[key])))x(seq)
)x
group by gp;
结果: