Vnořené nahrazení je v pořádku, ale jak se úroveň vnoření zvyšuje, čitelnost vašeho kódu klesá. Pokud bych měl nahradit velký počet znaků, rozhodl bych se pro něco čistšího, jako je níže uvedený přístup řízený tabulkou.
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]