如何按 space 个字符拆分 SQL 中的字符串

How to split a string in TSQL by space character

我在 TSQL 中有一项艰巨的任务,我似乎找不到简单的方法来完成。我正在尝试使用 CROSS APPLY STRING_SPLIT(sentence, ' '),但我只能得到该方法的一个词。你能帮忙吗?谢谢。

例句:

  1. 我需要使用 TSQL 拆分字符串。
  2. 这种方法是传统的,并且在 SQL 服务器的所有版本中都受支持。

想要的答案:

  1. 我需要
  2. 拆分
  3. 个字符串使用
  4. TSQL.

想要的答案:

  1. 这种方法
  2. 传统
  3. ,以及
  4. 支持
  5. 总共
  6. 版本和
  7. 个版本
  8. SQL 服务器。

给你:

首先向任何逗号添加一个 space(您希望将逗号视为单词),然后使用一些 Json 将每个 space 上的字符串拆分为行,然后分配使用 modulolag 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;

结果:

Demo Fiddle