如何用 sql 中的单个字符串替换多个连续字符串

how to replacle multiple continuous string with single string in sql

我有一个字符串 'kj,,,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,ad'

现在我想用单个替换多个 commas 作为

'kj,sdkdsd,das,das,sdasd,ad'

注意: 最佳表现

这将为您完成:

declare @str varchar(100)='kj,,,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,ad'

declare @strBefore varchar(100)=''
WHILE @strBefore<>@str BEGIN
  SET @strBefore=@str
  SET @str=REPLACE(@str,',,',',')
END
print @str

你可以在 WHILE 循环中完成:

DECLARE @s NVARCHAR(200) = 'kj,,,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,ad'

WHILE @s LIKE '%,,%'
    SET @s = REPLACE(@s, ',,', ',')

SELECT  @s

使用这个:

DECLARE @mystring VARCHAR(50) = 'kj,,,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,ad'

SELECT REPLACE(REPLACE(REPLACE(@mystring, ',', '{}'), '}{', ''), '{}', ',')

输出: kj,sdkdsd,das,das,dasdasd,ad

我会用 CLR RegEx 替换。在这里阅读更多内容:

https://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example/

然后调用它:

SELECT dbo.RegExReplace('kj,,,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,ad', ',{2,}', ',')