可以通过like谓词来检索信息,但是like谓词在检索时是不区分大小写的,而使用contains 谓词在数据库中检索信息则可以做到区分大小写的功能,同时contains在某些方面所提供的文本查询能力比like 强,经过实践验证,charindex()并不比前面加%的like更能提高查询效率,并且charindex()会使索引失去作用(指sqlserver数据库)  

SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。

适用性测试结果:

1)charindex对于检索结果最大位移有要求,经测试,Sql2008中的ntext字段,位移不能超过3987,否则返回0;

2)patindex 和 like 无位移限制;

3)patindex 支持匹配表达式,可以应用正则;

4)like可以用'%oldstring%'进行模糊匹配;

5)charindex只能匹配固定字符串

CONTAINS语句的语法格式为:
CONTAINS({column | *}), <contains_search
_condition>)
其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。Contains_search_
condition 说明CONTAINS语句的搜索内容,其语法格式为:
{<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] [...n]
下面就simple_term和prefix_term参数做简要说明:
simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:
{‘word’|“ phrase”}
prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:
{“word*” | “phrase*”}
例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:
select title, notes
from book
where contains(tilte, ‘database’) or contains(notes,‘database’)
or contains(title,‘computer’) or contains(notes,‘computer’)
FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。
FREETEXT语句的语法格式为:FREETEXT({column | * },‘freetext_string’)
其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。
例如,下面语句使用FREETEXT语句搜索Book表中包含“Successful Life”字符串的数据行:
select title, notes
from book
where freetext(*,‘Successful Life’)

SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。
CONTAINS语句的语法格式为:
CONTAINS({column | *}), <contains_search
_condition>)
其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。Contains_search_
condition 说明CONTAINS语句的搜索内容,其语法格式为:
{<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] [...n]
下面就simple_term和prefix_term参数做简要说明:
simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:
{‘word’|“ phrase”}
prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:
{“word*” | “phrase*”}
例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:
select title, notes
from book
where contains(tilte, ‘database’) or contains(notes,‘database’)
or contains(title,‘computer’) or contains(notes,‘computer’)
FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。
FREETEXT语句的语法格式为:FREETEXT({column | * },‘freetext_string’)
其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。
例如,下面语句使用FREETEXT语句搜索Book表中包含“Successful Life”字符串的数据行:
select title, notes
from book
where freetext(*,‘Successful Life’)

转载于:https://www.cnblogs.com/spring_wang/archive/2013/06/06/3121535.html

sql中contains,like,patindex ,charindex和freetext语句的区别?相关推荐

  1. SQL Server 中 SELECT INTO 和 INSERT INTO SELECT语句的区别

    SQL Server 中 SELECT INTO 和 INSERT INTO SELECT语句的区别 我们在写存储过程的时候经常会遇到需要将查询到的数据存到一张表里面的情况,如将一个table1的数据 ...

  2. SQL中char\varchar\text与nchar\nvarchar\ntext的区别

    SQL中char\varchar\text与nchar\nvarchar\ntext的区别 定义 特点 定义 char char(n)是长度不可变的,用于表示非Unicode字符数据.n代表该数据类型 ...

  3. SQL中常用的字符串CHARINDEX函数和PATINDEX函数详解!

    今天整理了些日常可能经常遇到的一些处理字符串的函数,有些可能在写SQL时突然间想不到如何使用,今天就给大家总结两个函数的应用方法,以备不时之需!记得点赞收藏! CHARINDEX(expression ...

  4. sql中条件放在on后面和where后面的区别

    2019独角兽企业重金招聘Python工程师标准>>> 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时 ...

  5. 在SQL中char、nchar、varchar和nvarchar的区别

    首先 1.char:固定长度,存储英文字符,不能包含中文字符. 2.nchar:固定长度,是unicode来存储字符,可以包含中文字符. 3.varchar:可变长度,存储英文字符,不能包含中文字符. ...

  6. SQL中CharIndex函数、InStr 函数、PatIndex函数、Stuff函数区别与作用

    在c#中可以用字符串的IndexOf方法来判断一个字符串中是否含有指定的字符.而在SQL SERVER中也就相关的函数来实现IndexOf的功能.CharIndex,InStr,PatIndex三个函 ...

  7. mysql sql patindex_SQL Server的patindex和charindex的用法

    charindex函数返回字符或字符串在另一个字符串中的起始位置.charindex函数调用方法如下: charindex ( expression1 , expression2 [ , start_ ...

  8. SQL中的Contains

    这个问题的不同之处在于,我们不是在寻找精确匹配,而是在另一个内部寻找一个值.考虑生产描述: "Mountain Bike with lightweight frame yet rugged ...

  9. 实例演示在SQL中启用全文检索

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 如何在SQL中启用全文检 ...

最新文章

  1. 从消费端到企业端,从设备到数据:物联网市场的爆发式增长
  2. 2020-11-8(activity状态以及任务栈)
  3. python中time库是什么意思_python中time库的time.time()函数的作用是什么
  4. Android简单实现将手机图片上传到服务器中
  5. Angular变化检测机制
  6. oracle rman 检查坏块,Oracle中使用RMAN来检验坏块
  7. 资源放送丨《Oracle DataGuard 备份恢复最佳实践 》PPT视频
  8. Mac安装redis与后台启动
  9. 史上最全android分辨率
  10. Java 动态代理 Demo
  11. seqkit根据基因id_AgriSeq 靶向测序法基因分型技术
  12. 远程工具显示Linux乱码问题解决方案
  13. 高校GIS房地产管理系统
  14. MULTISIM安装下载
  15. Android开启OTG功能/USB Host API功能
  16. 源码分析 --- MapReduce如何确定任务的SplitSize、Splits、Map、Reduce
  17. 有机酸膜分离之柠檬酸生产应用反渗透技术
  18. 1750. 救生员 Lifeguards S
  19. android模拟器pc版怎么玩,原神电脑版安卓模拟器怎么使用,电脑上怎么玩原神手游...
  20. 【docker基础操作命令】(一)启动命令和镜像命令

热门文章

  1. Python Django 一对多逆向查询示例
  2. 【爬蟲】使用 httpclient进行POST请求
  3. 编译器不识别stm指令_编译器简介
  4. hibernate-jpa/hibernate-jpa-2.1-api-1.0.0.final.jar源代码下载地址
  5. linux中的线程函数
  6. 强化学习6——policy gradient的变种State of the Art
  7. 内存管理代码分析 stm32
  8. 关于STM中SPI运用的NSS引脚解读
  9. java try finally connectoin close_Java I/O流详解
  10. python idle在哪_python安装包里idle在哪