SQL服务器,替换一个或多个连续的字符

SQL Server, replace one or more consecutive char

使用SQL服务器,是否可以替换一个或多个连续的字符?

例如:

select replace(replace(replace('my string   to  split','  ',' '),'   ',' '),'    ',' ')

不使用循环?

在循环结构中使用 charindex https://www.w3schools.com/sql/func_sqlserver_charindex.asp,然后使用变量来跟踪索引位置。

不需要循环

这是 Gordon Linoff 前段时间展示的一个小技巧。

  1. 展开
  2. 消除
  3. 恢复

您可以替换 characters/strings 对的任何 ODD 组合,例如 §§||

例子

Select replace(replace(replace('my string   to  split',' ','><'),'<>',''),'><',' ')

或更多唯一字符串

Select replace(replace(replace('my string   to  split',' ','§§||'),'||§§',''),'§§||',' ')

结果

my string to split