首页 >数据库 >mysql教程 >如何连接具有逗号分隔列的表?

如何连接具有逗号分隔列的表?

Susan Sarandon
Susan Sarandon原创
2025-01-03 05:04:40637浏览

How to Join Tables with Comma-Delimited Columns?

连接逗号分隔的数据列

要连接两个包含逗号分隔数据列的表,请考虑以下操作方法:

标准化

通过为每个值创建一个单独的列来标准化包含逗号分隔值的表。这简化了查询并避免了复杂的字符串操作。

创建拆分函数

创建一个拆分函数,将逗号分隔的字符串转换为单独的行。这允许您对行执行联接。

使用 FOR XML PATH 和 STUFF

使用 FOR XML PATH 将值连接成逗号分隔的字符串和 STUFF删除前导逗号。

直接申请 FOR XML PATH

直接将 FOR XML PATH 应用于数据以生成所需的输出。

示例

将函数与连接

;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 路径和内容

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn