Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL-'08:Nhiều câu lệnh Replace có phải là một phương pháp không tốt không / có cách nào khác để viết truy vấn này không?

Thay thế lồng nhau là tốt, nhưng khi mức lồng tăng khả năng đọc mã của bạn sẽ giảm xuống. Nếu tôi có một số lượng lớn ký tự để thay thế, tôi sẽ chọn một thứ gì đó gọn gàng hơn như cách tiếp cận theo hướng bảng bên dưới.

    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. Có thể truy cập cơ sở dữ liệu .mdf mà không có SQL Server không?

  2. Tham chiếu bí danh ở nơi khác trong danh sách CHỌN

  3. Oracle tương đương với hàm IsNull () của SQL Server là gì?

  4. Khái niệm thiết kế cơ sở dữ liệu với SQL Server Management Studio (SSMS) Phần 1

  5. Chuyển đổi ‘datetime’ thành ‘smalldatetime’ trong SQL Server (Ví dụ T-SQL)