使用全文搜索在sql server中搜索字符串的中间部分
使用Like
关键字如下:
select * from tablename where col like '%like%'
这里是像SQL教程:
http://www.w3schools.com/sql/sql_like.asp
这里是MSDN:
http://msdn.microsoft.com/en-us/library/ms179859.aspx
希望它的帮助。
好吧,为了能继续使用全文索引,避免表扫描,试试这个
select *
from yourTable
where contains (ColumnName,'like')
and (ColumnName not like 'like%' or ColumnName like '_%like%')
但是,查询优化器可能决定全表扫描更有效。
select * from eg_fulltext其中contains(描述,'“like”')和(描述不像'like%'或描述像'_%like%')---它不起作用 – krishnakishore 2013-04-08 05:58:24
嗯。我测试了它,它在我的机器上工作。第二行过滤掉句子开头只有一个'like'的行,而第一行只包含句子中'like'的行。你能描述一下,什么不起作用? – alzaimar 2013-04-08 06:12:23
好的我正在跟另一个例子 – krishnakishore 2013-04-08 06:20:58
检查您的表是否过期的统计信息,尤其是检查统计信息是否与您的全文索引相关。由于使用的是SQL Server 2008中,所以,你可以查询DMV让你的索引统计信息或使用DBCC看到的统计数据详细信息
DBCC SHOW_STATISTICS ("[schema].[table]",indexname);
检查第一个返回结果,[更新],[行] ,如果统计数据过期或[取样的行数]远远小于[行数],这会导致SQL引擎决定使用表扫描而不是使用索引,[统计数据]会被[采样行数]所限制。
我认为问题是'在字符串/句子中间'这个子句。据我所知,没有办法用简单的全文来查询。 – alzaimar 2013-04-08 06:18:12
like operator ... – 2013-04-08 04:59:03