查询同一列内多个项目的表(并忽略冗余)

时间:2015-10-19 14:09:46

标签: sql sql-server

我正试图找到一种使用SQL查询解决问题的聪明方法......所以我希望你们中的一些人能帮我解决问题。

我在一个已定义的参数中收到一个“表类型”,它可能包含这样的内容:

    AA

    BB|AA

    AA|BB|CC

    CC

    DD

这是产品代码的原始选择。有些行包含同一列中的多个代码。

因此,为了执行进一步的步骤,此过程需要执行一些清理以过滤可能包含在其他更大的包中的冗余代码或代码包。

例外结果应该是这样的:

    AA|BB|CC

    DD

(因为AA和AA | BB都已经包含在AA | BB | CC ......就像DD不是其他的一部分)

对于大型列表来说这应该更快,所以我相信只使用查询会更快,但这有点我不知道,特别是当使用分隔符在同一列中可能有多个项目时...

代码可以是2到6个字母,一个不同的代码可以与分隔符位于同一行。

1 个答案:

答案 0 :(得分:0)

为什么不将所有内容拆分为单独的行并使用不同的?

如果:

AA
BB|AA
AA|BB|CC

与此相同:

AA|BB|CC

然后它必须与此相同:

AA
BB
CC

因此,只需使用字符串拆分功能将数据拆分为行,例如Jeff Moden的DelimitedSplit8k