Aquí hay una forma sencilla basada en conjuntos que colapsará múltiples espacios en un solo espacio mediante la aplicación de tres reemplazos.
DECLARE @myTable TABLE (myTextColumn VARCHAR(50))
INSERT INTO @myTable VALUES ('0Space')
INSERT INTO @myTable VALUES (' 1 Spaces 1 Spaces. ')
INSERT INTO @myTable VALUES (' 2 Spaces 2 Spaces. ')
INSERT INTO @myTable VALUES (' 3 Spaces 3 Spaces. ')
INSERT INTO @myTable VALUES (' 4 Spaces 4 Spaces. ')
INSERT INTO @myTable VALUES (' 5 Spaces 5 Spaces. ')
INSERT INTO @myTable VALUES (' 6 Spaces 6 Spaces. ')
select replace(
replace(
replace(
LTrim(RTrim(myTextColumn)), ---Trim the field
' ',' |'), ---Mark double spaces
'| ',''), ---Delete double spaces offset by 1
'|','') ---Tidy up
AS SingleSpaceTextColumn
from @myTable
Su estado de actualización ahora se puede establecer en base:
update @myTable
set myTextColumn = replace(
replace(
replace(
LTrim(RTrim(myTextColumn)),
' ',' |'),
'| ',''),
'|','')
utilizar un cláusula WHERE apropiada para limitar la actualización únicamente a las filas que se necesita actualizar o tal vez tener espacios dobles.
Ejemplo:
where 1<=Patindex('% %', myTextColumn)
he encontrado una escritura externa sobre este método: REPLACE Multiple Spaces with One
Creo que esto es lo mismo que la respuesta de Pablo, pero sus comentarios lo hacen un poco más legible – cindi
Bien visto que son del mismo método. – Andrew
Referencia externa aclarado cosas – cindi