在SQL Server中对名称字段进行部分匹配

时间:2012-04-05 08:24:12

标签: sql-server-2008 full-text-search

我需要在名称搜索上启用部分匹配。目前它适用于Like '%@name%',但它还不够好。

我们需要同时输入名字和姓氏,两者都需要是部分的,所以我假设全文是可行的。

问题在于我无法让它对名称进行部分匹配。例如,如果我输入完整但不是部分的任何部分,那么搜索我的名字(Fedor Hajdu)将起作用(例如,它应匹配搜索'fe ha'

我怎样才能做到这一点?可以将全文索引设置为执行类似音节匹配的操作吗?

2 个答案:

答案 0 :(得分:3)

哼唱mya帮助你的三个选项:

  1. INFLECTIONAL表格(Link
  2. 包含NEAR(Link
  3. 包含加权值(Link
  4. 如果这没有帮助,请获取字符串'fe ha'并在每个空格上添加'%'并执行Like:

    Like '%fe%ha%'
    

答案 1 :(得分:0)

使用CONTAINS()或CONTAINSTABLE(),您需要做的就是在匹配字符串的末尾添加*:

CONTAINS(描述,'“top *”');

如果您将字符串作为参数,可以像这样连接:

SET @SearchTerm ='“'+ @NameParameter +'*”'

CONTAINS(Description,SearchTerm);

https://technet.microsoft.com/en-us/library/ms142492(v=sql.105).aspx