Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中用单个字符串重放多个连续字符串_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

如何在sql中用单个字符串重放多个连续字符串

如何在sql中用单个字符串重放多个连续字符串,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个字符串作为'kj,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,ad' 现在我想用单引号替换多个逗号 作为 'kj,sdkdsd,das,das,sdasd,ad' 注: 这将为您提供最佳性能: declare @str varchar(100)='kj,,,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,ad' declare @strBefore varchar(100)='' WHILE @strBefore<>@st

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

现在我想用单引号替换多个逗号 作为

'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
declare@str varchar(100)='kj,,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,,,,ad'
声明@strBefore varchar(100)=”
当@strBefore@str开始
设置@strBefore=@str
设置@str=REPLACE(@str,,,,,,,,)
结束
打印@str

这将为您做到:

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
declare@str varchar(100)='kj,,,,,,,,sdkdsd,das,das,,,,dasdasd,,,,,,,,ad'
声明@strBefore varchar(100)=”
当@strBefore@str开始
设置@strBefore=@str
设置@str=REPLACE(@str,,,,,,,,)
结束
打印@str

您可以在
循环时执行此操作:

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

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

SELECT  @s

您可以在
循环时执行此操作:

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
使用以下命令:

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

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

输出:
kj、sdkdsd、das、das、dasdasd、ad
我将使用CLR RegEx替换。请在此处阅读更多信息:

然后称之为:

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

我将使用CLR正则表达式替换。请在此处阅读更多信息:

然后称之为:

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

CLR对于如此简单的东西来说有点过头了。对于这样的东西来说可能有点过头了,但这可以在未来的开发中使用。除此之外,您以后也不必担心其他复杂的替换。对于如此简单的东西来说,CLR有点过头了。对于这样的东西来说,这可能有点过头了,但这可以在将来的开发中使用。除此之外,您以后也不必担心其他复杂的替换。