カンマ区切りのデータ列の結合
カンマ区切りのデータ列を含む 2 つのテーブルを結合するには、次の点を考慮してください。アプローチ:
正規化
各値の列を持つ個別のテーブルを作成することにより、カンマ区切りの値を含むテーブルを正規化します。これにより、クエリが簡素化され、複雑な文字列操作が回避されます。
分割関数の作成
カンマ区切りの文字列を個々の行に変換する分割関数を作成します。これにより、行で結合を実行できます。
FOR XML PATH と STUFF を使用します
FOR XML PATH を使用して、値をカンマ区切りの文字列と STUFF に連結します。先頭のカンマを削除します。
FOR XML を直接適用PATH
FOR XML PATH をデータに直接適用して、目的の出力を生成します。
例
Split Function with連結
;with cte as ( select c.col1, t1.col2 from t1 inner join ( select t2.col1, i.items col2 from t2 cross apply dbo.split(t2.col2, ',') i ) c on t1.col1 = c.col2 ) select distinct c.col1, STUFF( (SELECT distinct ', ' + c1.col2 FROM cte c1 where c.col1 = c1.col1 FOR XML PATH ('')), 1, 1, '') col2 from cte c
XML PATH および STUFF 用
select col1, ( select ', '+t1.col2 from t1 where ','+t2.col2+',' like '%,'+cast(t1.col1 as varchar(10))+',%' for xml path(''), type ).value('substring(text()[1], 3)', 'varchar(max)') as col2 from t2;
以上がカンマ区切りの列を含むテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。