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

Menghapus karakter duplikat berulang

Ini berfungsi untuk string yang secara eksklusif berupa koma atau memiliki hingga 398 koma yang berdekatan.

 SELECT 
     CASE 
         WHEN TargetString NOT LIKE '%[^,]%' 
             THEN '' /*The string is exclusively commas*/
         ELSE 
            REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TargetString,
            REPLICATE(',',16),','), /*399/16 = 24 remainder 15*/
            REPLICATE(',',8),','),  /* 39/ 8 =  4 remainder 7*/
            REPLICATE(',',4),','),  /* 11/ 4 =  2 remainder 3*/
            REPLICATE(',',2),','),  /*  5/ 2 =  2 remainder 1*/
            REPLICATE(',',2),',')   /*  3/ 2 =  1 remainder 1*/
         END
 FROM T    

Tambahkan kekuatan ekstra 2 di bagian atas jika Anda membutuhkan lebih banyak atau hapus dari atas jika Anda membutuhkan lebih sedikit. Komentar oleh setiap tahap menunjukkan angka terkecil yang tidak akan berhasil ditangani oleh tahap ini.

Semua baris komentar dalam format ini

/*  L/D    =  Q remainder R */

D:    Corresponds to the length of the string generated by `REPLICATE`
R:    Is always D-1
Q+R:  Form L for the next step

Jadi untuk memperpanjang seri ke atas dengan REPLICATE(',',32),',') yang lain panggung

D = 32 
R = 31
Q = 368 (399-31)
L = (368 * 32) + 31 = 11807

Jadi itu akan menangani bagian koma hingga 11.806 karakter.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengecualian Kehabisan Memori di SQL 2008

  2. sp_executesql menyebabkan permintaan saya menjadi sangat lambat

  3. Cara Mengubah Skema Objek (Tabel, Tampilan, Prosedur Tersimpan) di Database SQL Server - Tutorial SQL Server / TSQL Bagian 28

  4. mengubah batasan DEFAULT pada kolom SQL

  5. Bisakah LINQ-to-SQL menghilangkan kolom yang tidak ditentukan pada sisipan sehingga nilai default basis data digunakan?