4 回答
TA贡献1856条经验 获得超5个赞
更整洁:
select string = replace(replace(replace(' select single spaces',' ','<>'),'><',''),'<>',' ')
输出:
选择单个空格
TA贡献1995条经验 获得超2个赞
这将工作:
declare @test varchar(100)
set @test = 'this is a test'
while charindex(' ',@test ) > 0
begin
set @test = replace(@test, ' ', ' ')
end
select @test
TA贡献1772条经验 获得超5个赞
如果您知道一行中最多只能有一定数量的空格,则可以嵌套替换:
replace(replace(replace(replace(myText,' ',' '),' ',' '),' ',' '),' ',' ')
4个替换项最多可固定16个连续空格(16个,然后8个,然后4个,然后2个,然后1个)
如果可能要长得多,那么您必须执行类似内联函数的操作:
CREATE FUNCTION strip_spaces(@str varchar(8000))
RETURNS varchar(8000) AS
BEGIN
WHILE CHARINDEX(' ', @str) > 0
SET @str = REPLACE(@str, ' ', ' ')
RETURN @str
END
然后就做
SELECT dbo.strip_spaces(myText) FROM myTable
TA贡献1829条经验 获得超4个赞
update mytable
set myfield = replace (myfield, ' ', ' ')
where charindex(' ', myfield) > 0
替换将在所有双精度空格上起作用,而无需进行多次替换。这是基于集合的解决方案。
- 4 回答
- 0 关注
- 692 浏览
添加回答
举报