sql >> データベース >  >> RDS >> Sqlserver

T-SQL:コンマ区切り値の分割と集計

    分割機能を使用する場合:

    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;
      

    その後、次の方法でデータをクエリできます:

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

    SQL Fiddle With Demo を参照してください。



    1. MysqlComplexWhere句

    2. PHPとMySqlはテーブルが空かどうかをチェックします

    3. コピーコマンドを開始したラムダ関数がタイムアウトした後でも、コピーコマンドをredshiftで実行し続けるにはどうすればよいですか?

    4. SQLの「AND」または「OR」が最初に来ますか?