Thay thế lồng nhau là tốt, nhưng khi mức lồng tăng khả năng đọc mã của bạn sẽ giảm xuống. Nếu tôi có một số lượng lớn ký tự để thay thế, tôi sẽ chọn một thứ gì đó gọn gàng hơn như cách tiếp cận theo hướng bảng bên dưới.
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]