包含多个世界

时间:2015-07-07 09:57:08

标签: sql full-text-search contains

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

2 个答案:

答案 0 :(得分:0)

使用类似查询

SELECT * FROM Customers

WHERE firstNameLIKE'%ma%&#39 ;;

答案 1 :(得分:0)

这样做的好方法就是

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

但contains包含的第一个参数中不允许任何函数。另一种方式可能是

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

但是这也给出了列不是全文索引的错误,因此不能使用contains。

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

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