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

T-SQL:phân tách và tổng hợp các giá trị được phân tách bằng dấu phẩy

Bạn sẽ muốn sử dụng một hàm chia nhỏ:

create FUNCTION [dbo].[Split](@String varchar(MAX), @Delimiter char(1))       
returns @temptable TABLE (items varchar(MAX))       
as       
begin      
    declare @idx int       
    declare @slice varchar(8000)       

    select @idx = 1       
        if len(@String)<1 or @String is null  return       

    while @idx!= 0       
    begin       
        set @idx = charindex(@Delimiter,@String)       
        if @idx!=0       
            set @slice = left(@String,@idx - 1)       
        else       
            set @slice = @String       

        if(len(@slice)>0)  
            insert into @temptable(Items) values(@slice)       

        set @String = right(@String,len(@String) - @idx)       
        if len(@String) = 0 break       
    end   
return 
end;

Và sau đó bạn có thể truy vấn dữ liệu theo cách sau:

select items, count(items)
from table1 t1
cross apply dbo.split(t1.id, ',')
group by items

Xem SQL Fiddle With Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm giá trị mặc định của trường datetime trong SQL Server vào dấu thời gian

  2. THỜI GIAN THỐNG KÊ trong SQL Server là gì?

  3. datetime so với datetime2 trong SQL Server:Sự khác biệt là gì?

  4. Máy ảo Azure để sử dụng máy chủ SQL

  5. Chèn Microsoft SQL Server từ truy vấn chọn