返回查询的所有行,其中一列中的字符串值与另一列中的字符串值匹配

时间:2018-08-24 13:58:07

标签: tsql full-text-search contains string-matching full-text-indexing

我一直在不停地寻找这个问题的答案:

我们的团队使用查询来返回包含13列的数据集。我们希望通过仅返回“ Actual Collection”列中任何字符串值位于相邻列“ PrvPrComments”中的行来缩小结果范围。另外,我们希望对“ Actual Manufacturer”和“ PrvPrComments”列执行相同的操作。如果PrvPrComments中存在“实际”集合或“实际制造商”中的字符串值,则我们要返回该行,如果不排除,则将其排除。

棘手的部分是PrvPrComments是一列,其中包含长文本字符串,因此查询需要解析以查找和匹配该字符串。它们还需要精确匹配,因此“枕头完美”和“枕头”不会是同一回事。

下面是一个示例。我想返回包含“牛仔”和“枝形吊灯”的行,因为有匹配项,但没有其他匹配项:

Example of data

我最初的猜测是编写一个使用全文索引和/或包含的查询。任何帮助将不胜感激,对于没有在此处发布的基础代码,我深表歉意,对此我还很陌生,并且在从哪里开始遇到麻烦。

谢谢

2 个答案:

答案 0 :(得分:0)

where '%' + actualCollection + '%' like PrvPrComments

答案 1 :(得分:0)

如果数据不够多,则可以使用( like 表达式)返回数据,

在哪里PrvPrComments喜欢'%'+ ActualCollection +'%'

但是,如果数据量巨大,并且全文搜索的用处不大,则可能会有另一列作为标志,并在INSERTION时填充该列(当ActualCollection为LIKE PrvPrComments时,将标志设置为1)。 。以后,您需要查询标记为1的行