在T-SQL中用单个空格替换重复的空格

我需要确保一个给定的字段在字符之间不要有一个以上的空格(我并不关心所有的空白,而只关心空格)。


所以


'single    spaces   only'

需要变成


'single spaces only'

下面的行不通


select replace('single    spaces   only','  ',' ')

因为它会导致


'single  spaces  only'

我真的更喜欢使用本地T-SQL,而不是基于CLR的解决方案。


有什么想法吗?


慕工程0101907
浏览 693回答 4
4回答

RISEBY

更整洁:select string = replace(replace(replace(' select&nbsp; &nbsp;single&nbsp; &nbsp; &nbsp; &nbsp;spaces',' ','<>'),'><',''),'<>',' ')输出:选择单个空格

拉风的咖菲猫

这将工作:declare @test varchar(100)set @test = 'this&nbsp; &nbsp;is&nbsp; a&nbsp; &nbsp; test'while charindex('&nbsp; ',@test&nbsp; ) > 0begin&nbsp; &nbsp;set @test = replace(@test, '&nbsp; ', ' ')endselect @test

月关宝盒

如果您知道一行中最多只能有一定数量的空格,则可以嵌套替换:replace(replace(replace(replace(myText,'&nbsp; ',' '),'&nbsp; ',' '),'&nbsp; ',' '),'&nbsp; ',' ')4个替换项最多可固定16个连续空格(16个,然后8个,然后4个,然后2个,然后1个)如果可能要长得多,那么您必须执行类似内联函数的操作:CREATE FUNCTION strip_spaces(@str varchar(8000))RETURNS varchar(8000) ASBEGIN&nbsp;&nbsp; &nbsp; WHILE CHARINDEX('&nbsp; ', @str) > 0&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; SET @str = REPLACE(@str, '&nbsp; ', ' ')&nbsp; &nbsp; RETURN @strEND然后就做SELECT dbo.strip_spaces(myText) FROM myTable

浮云间

update mytableset myfield = replace (myfield, '&nbsp; ',&nbsp; ' ')where charindex('&nbsp; ', myfield) > 0&nbsp;替换将在所有双精度空格上起作用,而无需进行多次替换。这是基于集合的解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server