我在SQL Server 2008 R2数据库中遇到以下错误:
无法在表或索引视图“ tblArmy”上使用a
CONTAINS
或FREETEXT
谓词,因为它不是全文索引。
Answers:
确保已安装全文搜索功能。
创建全文搜索目录。
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上找到更多信息。
解决方案CONTAINS
:如果您不想在该列上创建全文本索引,而性能也不是您的优先事项之一,则可以使用LIKE
不需要任何事先配置的语句:
示例:找到所有包含字母Q的产品:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
您可能需要为表启用全文索引。
Select * from table
where CONTAINS([Column], '"A00*"')
将与%相同
where [Column] Like 'A00%'