1

我无法使用全文搜索索引搜索字符串的中间部分,例如:有一个字符串“我喜欢音乐”我无法搜索字符串中间部分的类似内容。

4

4 回答 4

1

试试LIKE运算符。

SELECT 
    * 
FROM 
    YourTABLE 
WHERE 
    ColumnName LIKE '%like%'
于 2013-04-08T04:59:55.700 回答
0

在查询中使用Like关键字如下:

select * from tablename where col like '%like%'

下面是like in sql的教程:

http://www.w3schools.com/sql/sql_like.asp

这是 MSDN:

http://msdn.microsoft.com/en-us/library/ms179859.aspx

希望它有帮助。

于 2013-04-08T05:03:36.043 回答
0

好吧,为了仍然使用全文索引并避免表扫描,试试这个

 select * 
   from yourTable
  where contains (ColumnName,'like')
    and (ColumnName not like 'like%' or ColumnName like '_%like%')

但是,查询优化器可能会决定全表扫描更有效。

于 2013-04-08T05:47:55.570 回答
0

检查表的统计信息是否过时,特别是检查与全文索引相关的统计信息。由于您使用的是 SQl Server 2008,因此,您可以查询 DMV 以获取索引的统计信息或使用 DBCC 查看统计详细信息

DBCC SHOW_STATISTICS ("[schema].[table]",indexname);

检查第一个返回结果,[Updated],[rows],[rows sampled],如果统计数据过期,或者[rows sampled]远小于[rows],这很多导致SQL引擎决定使用表扫描而不是使用您的索引。

于 2013-04-08T06:01:12.643 回答