【发布时间】:2015-09-24 18:06:39
【问题描述】:
我想使用全文搜索在列中查找以“ma”开头的单词 我使用了 CONTAINS(IDC_NOM,"'firstName*"') 但如果我在一列中有名称,例如:'ffff mate',它会返回这一行,因为第二个世界以'ma'开头。我只想在第一个单词以“ma”开头的列中搜索。
【问题讨论】:
标签: sql full-text-search contains
我想使用全文搜索在列中查找以“ma”开头的单词 我使用了 CONTAINS(IDC_NOM,"'firstName*"') 但如果我在一列中有名称,例如:'ffff mate',它会返回这一行,因为第二个世界以'ma'开头。我只想在第一个单词以“ma”开头的列中搜索。
【问题讨论】:
标签: sql full-text-search contains
使用类似查询
SELECT * FROM Customers
WHERE firstNameLIKE '%ma%';
【讨论】:
这样做的好方法是
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%';
【讨论】: