Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL-'08:Лоша практика ли са няколко оператора Replace/има ли друг начин да напишете тази заявка?

Вложената замяна е добра, но тъй като нивото на вложеност се увеличава, четливостта на вашия код намалява. Ако имах голям брой знаци за замяна, бих избрал нещо по-изчистено като подхода, базиран на таблицата по-долу.

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Задействане за вмъкване на актуализация как да определите дали вмъкване или актуализиране

  2. sql сървър 2008 Неуспешно влизане за потребител „NT AUTHORITY\NETWORK SERVICE“

  3. Как по-добре да дублирам набор от данни в SQL Server

  4. Как мога да автоматизирам задачата за генериране на скриптове в SQL Server Management Studio 2008?

  5. Връзката със SQL Server работи понякога