Ecco un semplice metodo basato sulla modalità che collassa più spazi in un unico spazio applicando tre sostituzioni.
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
l'istruzione UPDATE può ora essere impostato in base:
update @myTable
set myTextColumn = replace(
replace(
replace(
LTrim(RTrim(myTextColumn)),
' ',' |'),
'| ',''),
'|','')
Utilizzare un adeguato clausola WHERE per limitare l'aggiornamento per solo le righe che avere bisogno di aggiornare o forse hanno doppi spazi.
Esempio:
where 1<=Patindex('% %', myTextColumn)
ho trovato una scrittura esterno fino su questo metodo: REPLACE Multiple Spaces with One
Penso che questo sia lo stesso della risposta di Paolo, ma i tuoi commenti lo rendono un po 'più leggibile – cindi
Ben individuati sono lo stesso metodo. – Andrew
Riferimenti esterni chiarito cose – cindi