我不知道如何处理以下问题
我有一个列,其中的值可以是' T-00513153'但有时候这个价值会与更多的价值联系在一起,例如T-00513153,T-00513154'而我想要实现的是,如果价值是' T-00513153'或者' T-00513154'在另一行中,该值是连续值,例如T-00513153,T-00513100'然后对于每个未经处理的值使用该连接值,以便更好地理解我发布的示例
也许有一些subselect,看看Element值是否在同一列中的任何值内(foreaching all table),如果是,则使用最长的字符串,但我觉得这种方法可能有性能问题,任何想法?
谢谢
答案 0 :(得分:1)
是的,我认为你可以完成你想要的。以下查询查找与任何给定元素匹配的最长元素:
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;
您也可以使用相关子查询执行此操作。
注意:在分隔字段中存储事物列表是个坏主意。您应该有一个单独的联结表,每个数字和每个元素一行。这将使这种操作更有效率。