sql >> Database >  >> RDS >> Sqlserver

SQL-'08:Zijn meerdere Replace-statements een slechte gewoonte/is er een andere manier om deze query te schrijven?

De geneste vervanging is prima, maar naarmate het nesting-niveau toeneemt, neemt de leesbaarheid van uw code af. Als ik een groot aantal tekens moest vervangen, zou ik kiezen voor iets schoner, zoals de onderstaande tabelgestuurde aanpak.

    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. onCreate() van RoomDatabase.Callback() is niet aangeroepen na een succesvolle aanroep van .build()

  2. Beperk SQL tot de som van de waarde van de rij

  3. SQL geneste volgorde op?

  4. Is de CURRENT_TIMESTAMP-functie van Oracle echt een functie?