如何拆分SQL表中指定列值为独立记录并保留其余列数据
解决SQL多值列拆分问题
你的问题出在没有使用拆分函数返回的拆分后的值,而是直接读取原表的Apps列,所以结果还是原记录,不会拆分出独立行。
正确的查询应该调用拆分函数返回的拆分结果字段(DelimitedSplit8K通常会返回Item列存储拆分后的单个值),写法如下:
select t1.ID, s.Item as Apps from ImpactedProjects t1 outer apply dbo.DelimitedSplit8K(t1.Apps, ';') s where t1.ID = 13
如果拆分后的应用名称前后有空格,可以加上TRIM处理:
select t1.ID, LTRIM(RTRIM(s.Item)) as Apps from ImpactedProjects t1 outer apply dbo.DelimitedSplit8K(t1.Apps, ';') s where t1.ID = 13
另外,如果你的SQL Server版本是2016及以上,推荐用官方内置的STRING_SPLIT函数,用法更简洁:
select t1.ID, TRIM(s.value) as Apps from ImpactedProjects t1 outer apply STRING_SPLIT(t1.Apps, ';') s where t1.ID = 13
内容的提问来源于stack exchange,提问作者OrcaZep
相关产品推荐
相关产品推荐

