在SQL 2000中包含

Kin*_*ngs 1 sql full-text-search

我有一个'资产'表,其中包含'AssetDescription'列.它的每一行都有一些单词/句子,用逗号分隔.

第1行: - 花,全彩,女,趋势第2行
: - 宝宝闻花香,心

现在,如果放一个搜索查询,如: -

select * from Asset where contains(AssetDescription,'flower')
Run Code Online (Sandbox Code Playgroud)

它什么都不返回.

我还有一个带有'SearchCol'列的'SearchData'表,它具有与'Asset'表中提到的类似的行.现在,如果放一个搜索查询,如: -

select * from SearchData where contains(SearchCol,'flower')
Run Code Online (Sandbox Code Playgroud)

它返回两行.

题:-

  1. 为什么第一个查询不返回任何结果,但第二个查询正确.

  2. 如果"全文搜索"与第一个问题有关,那么该怎么做.因为我正在使用SQL Server 2000.

Phi*_*hil 5

CONTAINS需要全文搜索索引,并且要启用全文搜索索引.LIKE不需要全文搜索.

使用CONTAINS优于LIKE的优点是CONTAINS更灵活,可能更快.根据您的使用方式,LIKE可能需要全表扫描.

来自SQL Server文档

与全文搜索相比,LIKE Transact-SQL谓词仅适用于字符模式.此外,您不能使用LIKE谓词来查询格式化的二进制数据.此外,针对大量非结构化文本数据的LIKE查询比针对相同数据的等效全文查询慢得多.对数百万行文本数据的LIKE查询可能需要几分钟才能返回; 而对于相同的数据,全文查询只需几秒或更短时间,具体取决于返回的行数.