【问题标题】:SQL Contains() with a single word does not return all expected rows带有单个单词的 SQL Contains() 不会返回所有预期的行
【发布时间】:2019-12-15 04:24:51
【问题描述】:

我正在运行一个简单的 SQL 包含搜索,结果不包括所有预期的行。

我所需要的只是一个与 LIKE %word% 工作方式相同的搜索。

SELECT *
FROM [MyTable] where contains(Name, N'walmart')

通过运行此选择,返回的行似乎只包含带有“walmart”的名称,其前后有空格或某种其他分隔符,如句点(“walmart.com”)。这里没问题。

但是没有返回一行,其值为“mywalmart”。为什么此行无法通过包含搜索返回?如果我使用name LIKE '%walmart%',它工作得很好。

我需要如何修复包含搜索才能使其正常工作?

【问题讨论】:

标签: sql-server contains


【解决方案1】:

Contains 不会按照你的想法工作,就你的目的而言,LIKE 是最好的。

请参阅docs

CONTAINS 可以搜索:

  • 一个词或短语。
  • 单词或短语的前缀
  • 一个词靠近另一个词。
  • 从另一个词屈折产生的词(例如,单词 drive 是drives、driven、driving 和driven 的屈折词干)。
  • 使用同义词库作为另一个词的同义词的词(例如,“金属”一词可以有“铝”和“钢”等同义词)。

【讨论】:

    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多