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

pisahkan nilai pisahkan koma dari tabel di sql server

Anda dapat mengekstrak nama menggunakan CTE rekursif dan beberapa penguraian string. Sisanya hanya agregasi:

with cte as (
      select (case when names like '%,%'
                   then left(names, charindex(',', names) - 1)
                   else names
              end) as name,
             (case when names like '%,%'
                   then substring(names, charindex(',', names) + 1, len(names))
              end) as names
      from names
      union all
      select (case when names like '%,%'
                   then left(names, charindex(',', names) - 1)
                   else names
              end) as name,
             (case when names like '%,%'
                   then substring(names, charindex(',', names) + 1, len(names))
              end)
      from cte
      where names is not null
     )
select name, count(*)
from cte
group by name;

Seperti yang mungkin sudah Anda ketahui, menyimpan daftar yang dibatasi koma di SQL Server adalah ide yang buruk. Anda harus memiliki tabel asosiasi/persimpangan dengan satu baris per nama (dan kolom lain yang menjelaskan daftarnya).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengembalikan Nilai Rowversion Saat Ini untuk Database SQL Server (Contoh T-SQL)

  2. Kembalikan konstanta BIT dari SQL Stored Procedure

  3. Bagaimana cara mengecualikan catatan dengan nilai tertentu di sql pilih

  4. Jalankan prosedur tersimpan dengan parameter Output?

  5. Cara Menangani Kesalahan dalam Transaksi Bersarang SQL Server