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

SQLサーバーのテーブルからカンマ区切りの値を分割

    再帰 CTE といくつかの文字列解析を使用して名前を抽出できます。残りは単なる集計です:

    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;
    

    お気づきかもしれませんが、カンマ区切りのリストを SQL Server に保存するのはよくありません。名前ごとに 1 つの行 (およびそれが含まれるリストを説明する他の列) を持つ関連付け/結合テーブルが必要です。



    1. Mysqlデータベースへの複数のアップロード画像

    2. シーケンスを乱数に置き換える

    3. テーブルから[レコード]を複数回選択します

    4. 1から100までの数値のリストを生成するSQL