ホームページ > データベース > mysql チュートリアル > カンマ区切りの列を含むテーブルを結合するにはどうすればよいですか?

カンマ区切りの列を含むテーブルを結合するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-03 05:04:40
オリジナル
621 人が閲覧しました

How to Join Tables with Comma-Delimited Columns?

カンマ区切りのデータ列の結合

カンマ区切りのデータ列を含む 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート