sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-'08:Er flere Replace-sætninger en dårlig praksis/er der en anden måde at skrive denne forespørgsel på?

Den indlejrede erstatning er fin, men efterhånden som indlejringsniveauet øges, falder læsbarheden af ​​din kode. Hvis jeg havde et stort antal tegn, der skulle udskiftes, ville jeg vælge noget renere som nedenstående tabeldrevne tilgang.

    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. Sådan opretter du CreatedOn og UpdatedOn ved hjælp af EF Core 2.1 og Pomelo

  2. Hvordan skal jeg håndtere duplikerede posters vægte i MyISAM søgeindeks?

  3. Korrekt indsættelse af tabelnavn

  4. PHP/MySQL Slet billede fra databasen