包含多个世界的列中的全文搜索搜索
Posted
技术标签:
【中文标题】包含多个世界的列中的全文搜索搜索【英文标题】: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”开头的列中搜索。
【问题讨论】:
【参考方案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%';
【讨论】:
以上是关于包含多个世界的列中的全文搜索搜索的主要内容,如果未能解决你的问题,请参考以下文章