Penggantian bersarang baik-baik saja, tetapi karena level bersarang meningkatkan keterbacaan kode Anda turun. Jika saya memiliki banyak karakter untuk diganti, saya akan memilih sesuatu yang lebih bersih seperti pendekatan berbasis tabel di bawah ini.
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]