sql >> Databáze >  >> RDS >> Sqlserver

SQL-'08:Jsou vícenásobné příkazy Replace špatným postupem/Existuje jiný způsob, jak napsat tento dotaz?

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]


  1. Jak zakázat všechna omezení kontroly v databázi SQL Server - SQL Server / TSQL výukový program, část 87

  2. Úvod do metod shromažďování PL/SQL v databázi Oracle

  3. Převeďte DateTime v C# na formát yyyy-MM-dd a uložte jej do MySql DateTime Field

  4. Dynamická křížová karta MySQL