填充值看起来像相似的连接值

Filling value to look like similar concatenated value

下面的问题不知道怎么办

我有一个列,其中可以是 'T-00513153' 之类的值,但有时该值会与更多值(例如 'T-00513153, T-00513154' 连接在一起,而我想要完成的是如果值是 'T-00513153'或 'T-00513154' 并且在另一行中,此值是像 'T-00513153, T-00513100' 这样的连接值,然后对于每个未连接的值使用该连接值,为了更好地理解我正在发布示例

也许有一些子选择将查看元素值是否在同一列中的任何值内(foreaching all table),如果是,则使用最长的字符串,但我觉得这种方法可能有性能问题,任何的想法 ?

谢谢

是的,我认为你可以完成你想要的。以下查询查找与任何给定元素匹配的最长元素:

select s.number, longest.element, s.val1, s.val2      
from source s cross apply
     (select top 1 s2.element
      from source s2
      where s2.element like s.element + '%'
      order by len(s2.element) desc
     ) longest;

您也可以使用相关子查询来执行此操作。

注意:将事物列表存储在分隔字段中是个坏主意。您应该有一个单独的交汇点 table,每个数字和每个元素一行。它将使这种操作更有效率。