Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL-'08:Apakah beberapa pernyataan Ganti merupakan praktik yang buruk/apakah ada cara lain untuk menulis kueri ini?

Penggantian bersarang baik-baik saja, tetapi karena level bersarang meningkatkan keterbacaan kode Anda turun. Jika saya memiliki banyak karakter untuk diganti, saya akan memilih sesuatu yang lebih bersih seperti pendekatan berbasis tabel di bawah ini.

    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. Apa tipe data SQL terbaik untuk menyimpan string JSON?

  2. Gunakan SERVERPROPERTY() untuk Mendapatkan Info Server di SQL Server

  3. SQL Server - Apakah urutan kolom penting?

  4. Apa tingkat isolasi transaksi default untuk SQL Server dengan ADO.NET?

  5. bulan antara dua tanggal di sql server dengan tanggal mulai dan tanggal akhir masing-masing di sql server