连接逗号分隔的数据列
要连接两个包含逗号分隔数据列的表,请考虑以下操作方法:
标准化
通过为每个值创建一个单独的列来标准化包含逗号分隔值的表。这简化了查询并避免了复杂的字符串操作。
创建拆分函数
创建一个拆分函数,将逗号分隔的字符串转换为单独的行。这允许您对行执行联接。
使用 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中文网其他相关文章!