【问题标题】:How to split repeating string delimated by commas in T-SQL如何在 T-SQL 中拆分由逗号分隔的重复字符串
【发布时间】:2011-04-11 16:00:31
【问题描述】:

我已经尝试了一些试验,但还无法弄清楚。任何帮助将不胜感激。

我有一张如下表。

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的拆分功能

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

【问题讨论】:

    标签: sql sql-server tsql mssqlft


    【解决方案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)
    

    【讨论】:

    • 完美解决方案 Mikael。我不敢相信我在这上面花了 5 个小时,而你却在短时间内解决了它。看来我需要学习很多东西。非常感谢。
    【解决方案2】:

    尝试选择不同的。

    如果你使用 mysql ,你可以使用 group_concat() 函数来重新组合不同的值。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2017-10-30
      • 2012-05-24
      • 2017-01-24
      • 2018-12-21
      • 2018-07-29
      相关资源
      最近更新 更多