【问题标题】:Full text search search in column that contain multiple world包含多个世界的列中的全文搜索搜索
【发布时间】:2015-09-24 18:06:39
【问题描述】:

我想使用全文搜索在列中查找以“ma”开头的单词 我使用了 CONTAINS(IDC_NOM,"'firstName*"') 但如果我在一列中有名称,例如:'ffff mate',它会返回这一行,因为第二个世界以'ma'开头。我只想在第一个单词以“ma”开头的列中搜索。

【问题讨论】:

    标签: sql full-text-search contains


    【解决方案1】:

    使用类似查询

    SELECT * FROM Customers
    

    WHERE firstNameLIKE '%ma%';

    【讨论】:

    • tankyou 对此响应,但我不想使用 LIKE 请求变得如此缓慢,我想使用全文搜索
    • 这样您就可以使用 SELECT * FROM Customers where firstname=@firstname
    【解决方案2】:

    这样做的好方法是

    select * from Users
    where contains(substring(Name, 0, CHARINDEX(' ', Name)),'user')
    

    but contains 不允许在其第一个参数中包含任何函数。另一种方法可能是

    select * from
    (
      select substring(Name, 0, CHARINDEX(' ', Name)) as Name
      from Users
    ) A
    where contains(Name,'user')
    

    但这也给出了该列没有全文索引的错误,因此不能使用包含。

    所以基本上你不能在列上使用包含条件,因为索引应用于整个列。我知道 contains 比 like 运算符快,所以你想使用它但它不接受条件。与您的条件类似的查询将是

    select * from Users
    where substring(Name, 0, CHARINDEX(' ', Name)) like '%user%';
    

    【讨论】:

      猜你喜欢
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      相关资源
      最近更新 更多