sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-'08:Är flera Replace-satser en dålig praxis/finns det ett annat sätt att skriva den här frågan?

Den kapslade ersättningen är bra, men när kapslingsnivån ökar sjunker läsbarheten för din kod. Om jag hade ett stort antal tecken att byta ut skulle jag välja något renare som det tabelldrivna tillvägagångssättet nedan.

    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. Fråga mysql och exportera data som CSV i PHP

  2. Rails 4 custom 404 orsakar postgresql-anslutningsfel på Heroku

  3. Hur beräknar man storlek från min MySQL-fråga?

  4. Fråga för att hitta en lista över *alla* SSRS-dataset över *alla* SSRS-rapporter på ReportServer-instansen