【问题标题】:Returning all rows of a query where the string values in one column match the string values in another column返回查询的所有行,其中一列中的字符串值与另一列中的字符串值匹配
【发布时间】:2019-01-31 00:43:00
【问题描述】:

我一直在无休止地寻找这个问题的答案:

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

棘手的部分是 PrvPrComments 是一个包含长文本字符串的列,因此查询需要解析以查找和匹配字符串。它们还需要完全匹配,这样“Pillow Perfect”和“pillow”就不是同一个东西了。

这是下面发布的示例。我想返回包含“cowboy”和“chandelier”的行,因为有匹配但没有其他匹配:

Example of data

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

谢谢

【问题讨论】:

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


    【解决方案1】:
    where '%' + actualCollection + '%' like PrvPrComments
    

    【讨论】:

    • 这被标记为低质量。请使用 cmets 对其进行编辑以改进答案。
    【解决方案2】:

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

    WHERE PrvPrComments LIKE '%' + actualCollection + '%'

    但是如果数据很大并且全文搜索不会那么有用,您可能会有另一列作为标志并在 INSERTION 时填充相同的列,(当 actualCollection 是 LIKE PrvPrComments 然后将该标志设置为 1 ) .稍后您需要查询标记为 1 的行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 2018-10-11
      • 2018-07-14
      • 1970-01-01
      相关资源
      最近更新 更多