我在SQL Server 2008 R2数据库中收到以下错误:
无法在表格或索引视图'tblArmy'上使用
CONTAINS
或FREETEXT
谓词,因为它不是全文索引的。
答案 0 :(得分:99)
确保您已安装全文搜索功能。
创建全文搜索目录。
use AdventureWorks
create fulltext catalog FullTextCatalog as default
select *
from sys.fulltext_catalogs
创建全文搜索索引。
create fulltext index on Production.ProductDescription(Description)
key index PK_ProductDescription_ProductDescriptionID
在创建索引之前,请确保:
- 您还没有表格上的全文搜索索引,因为表格上只允许一个全文搜索索引
- 表中存在唯一索引。索引必须基于单键列,不允许NULL
- 存在全文目录。如果没有默认的全文目录,则必须明确指定全文目录名称。
您可以在SQL Sever Management Studio中执行第2步和第3步。在对象资源管理器中,右键单击表格,选择Full-Text index
菜单项,然后选择Define Full-Text Index...
子菜单项。全文索引向导将指导您完成整个过程。如果您还没有,它还会为您创建一个全文搜索目录。
您可以在MSDN
找到更多信息答案 1 :(得分:56)
CONTAINS
的解决方法:如果您不想在列上创建全文索引,并且性能不是您的优先级之一,则可以使用LIKE
语句,而不是需要任何先前的配置:
示例:查找包含字母Q的所有产品:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
答案 2 :(得分:16)
您必须在数据库中所有需要使用Full-Text-Index
的查询的表上定义CONTAINS
,这需要一段时间。
相反,您可以使用LIKE
,它可以为您提供即时结果,而无需调整表格的任何设置。
示例:
SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'
使用CONTAINS
可以获得使用LIKE
获得的相同结果。
答案 3 :(得分:3)
答案 4 :(得分:1)
您必须在要搜索的特定字段上添加全文索引。
ALTER TABLE news ADD FULLTEXT(headline, story);
“新闻”是您的表格和“标题,故事”字段,您无法启用全文搜索
答案 5 :(得分:1)
还有一个解决方案可将列全文设置为true。
这些解决方案例如对我不起作用
ALTER TABLE news ADD FULLTEXT(headline, story);
我的解决方案。
下一步
刷新
mssql 2014版本
答案 6 :(得分:0)
Select * from table
where CONTAINS([Column], '"A00*"')
将充当与%p相同的
where [Column] Like 'A00%'