Den indlejrede erstatning er fin, men efterhånden som indlejringsniveauet øges, falder læsbarheden af din kode. Hvis jeg havde et stort antal tegn, der skulle udskiftes, ville jeg vælge noget renere som nedenstående tabeldrevne tilgang.
declare @Category varchar(25)
set @Category = 'ABC & DEF/GHI, LMN OP'
-- nested replace
select replace(replace(replace(replace(@Category, ' & ', '-'), '/', '-'), ', ', '-'), ' ', '-') as Department
-- table driven
declare @t table (ReplaceThis varchar(10), WithThis varchar(10))
insert into @t
values (' & ', '-'),
('/', '-'),
(', ', '-'),
(' ', '-')
select @Category = replace(@Category, ReplaceThis, isnull(WithThis, ''))
from @t
where charindex(ReplaceThis, @Category) > 0;
select @Category [Department]