除了语法上略有区别外
他们俩有什么本质区别呢?
搜索匹配的方式都一样吧?如果一样,那么为什么还用contains那么麻烦呢,直接Like不久行了?
或者说,contains有什么好处呢

解决方案 »

  1.   


    文目录和索引
    Microsoft® SQL Server™ 2000 全文索引为在字符串数据中进行复杂的词搜索提供有效支持。全文索引存储关于重要词和这些词在特定列中的位置的信息。全文查询利用这些信息,可快速搜索包含具体某个词或一组词的行。全文索引包含在全文目录中。每个数据库可以包含一个或多个全文目录。一个目录不能属于多个数据库,而每个目录可以包含一个或多个表的全文索引。一个表只能有一个全文索引,因此每个有全文索引的表只属于一个全文目录。全文目录和索引不存储在它们所属的数据库中。目录和索引由 Microsoft 搜索服务分开管理。全文索引必须在基表上定义,而不能在视图、系统表或临时表上定义。 全文索引的定义包括: 能唯一标识表中各行的列(主键或候选键),而且不允许 NULL 值。
    索引所覆盖的一个或多个字符串列。 
    全文索引由键值填充。每个键的项提供与该键相关联的重要词(干扰词或终止词除外)、它们所在的列和它们在列中的位置等有关信息。格式化文本字符串(如 Microsoft® Word™ 文档文件或 HTML 文件)不能存储在字符串或 Unicode 列中,因为这些文件中的许多字节包含不构成有效字符的数据结构。数据库应用程序可能仍需要访问这些数据并对其应用全文检索。因为 image 列并不要求每一字节都构成一个有效字符,所以许多站点将这类数据存储在 image 列中。SQL Server 2000 引入了对存储在 image 列中的这些类型的数据执行全文检索的能力。SQL Server 2000 提供筛选,可从 Microsoft Office™ 文件(.doc、.xls 和 .ppt 文件)、文本文件(.txt 文件)及 HTML 文件(.htm 文件)中析取文本化数据。设计表时除包括保存数据的 image 列外,还需包括绑定列来保存存储在 image 列中的数据格式的文件扩展名。可以创建引用 image 列和绑定列的全文索引,以便在存储于 image 列中的文本化信息上启用全文检索。SQL Server 2000 全文检索引擎使用绑定列中的文件扩展名信息,选择从列中析取文本化数据的合适的筛选。全文索引是用于执行两个 Transact-SQL 谓词的组件,以便根据全文检索条件对行进行测试: CONTAINS
    FREETEXT 
    Transact-SQL 还包含两个返回符合全文检索条件的行集的函数: CONTAINSTABLE
    FREETEXTTABLE 
    SQL Server 在内部将搜索条件发送给 Microsoft 搜索服务。Microsoft 搜索服务查找所有符合全文检索条件的键并将它们返回给 SQL Server。SQL Server 随后使用键的列表来确定表中要处理的行。
      

  2.   

    contains的好处是可以在全文索引上用
      

  3.   


    CONTAINS   
      一个谓词,用于搜索包含基于字符的数据类型的列,该列与单个词和短语,以及与另一个词一定范围之内的近似词精确或模糊(不太精确的)匹配或者加权匹配。CONTAINS   可以搜索:     
      词或短语。   
      词或短语的前缀。   
      另一个词附近的词。   
      由另一个词的词尾变化生成的词(例如,词   drive   是   drives、drove、driving   和   driven   词尾变化的词干)。Contain   建立是全文索引   
      like   是匹配表达式