小编典典

如何在T-SQL中拆分逗号分隔的重复字符串

sql

我已经尝试过一些试验,但还不能解决。任何帮助,将不胜感激。

我有一个像下面的表。

LocationID       Project Name
1                A,A
1                A
1                A,B,C
1                A,C
1                B,C
1                C
2                A
2                C,D,E
2                E,F
2                F
3                G,H
3                H

我正在寻找的结果是。它会删除所有重复项,并仅保留具有其关联ID的不同值。

LocationID       Project Name
1                A
1                B
1                C
2                A
2                C
2                D
2                E
2                F
3                G
3                H

我试图用(len(replace(@ProjectNames,’,’))来计算逗号的数量

使用http://www.logiclabz.com/sql-server/split-function-in-sql-server-to-break-
comma-separated-strings-into-table.aspx中的拆分功能

但是,仍然没有运气。任何帮助将不胜感激。谢谢你。


阅读 153

收藏
2021-04-28

共1个答案

小编典典

declare @T table(LocationID int, PName varchar(50))

insert into @T values
(1,                'A,A'),
(1,                'A'),
(1,                'A,B,C'),
(1,                'A,C'),
(1,                'B,C'),
(1,                'C'),
(2,                'A'),
(2,                'C,D,E'),
(2,                'E,F'),
(2,                'F'),
(3,                'G,H'),
(3,                'H')

select distinct
  T.LocationID,
  r.value('.', 'varchar(50)') as [Project Name]
from @T as T
  cross apply
    (select cast('<r>'+replace(PName, ',', '</r><r>')+'</r>' as xml)) as x(x)
  cross apply
    x.nodes('r') as r(r)
2021-04-28