contains、like、charindex、patindex和freetext的区别

contains、like、charindex、patindex和freetext的区别

关于contains:
1.contains 谓词在数据库中检索信息则可以做到区分大小写
2.contains在某些方面所提供的文本查询能力比like强

  • CONTAINS语句的语法格式为:
    CONTAINS({column | *}), <contains_search_condition>|<contains_search_condition>)
  • 举例:查A表,在B列和C列中,找包含D或者E字符串的数据行
select B, C
from A
where contains(B, ‘D’) or contains(C,‘D’)
or   contains(B,‘E’) or contains(C,‘E’)

关于like:
1.like谓词在检索时是不区分大小写的
2.like可以用’%oldstring%'进行模糊匹配;
3.like 无位移限制;

关于charindex:
1.charindex()查询效率比like低
2.charindex()在sqlserver数据库会使索引失去作用
3.charindex 只能匹配固定字符串
4.charindex 最大的优点是支持搜索的起始位置指定
5.charindex对于检索结果最大位移有要求

  • charindex 语法格式为:
    CHARINDEX ( expression1 , expression2 , [ start_location ] )
    注:如果没有给定 start_location,而是一个负数或零,则将从expression2 的起始位置开始搜索。
  • 举例:
    select charindex(’_’,‘1767252_直接成功啦’,0) --//返回 8

关于patindex:
1.patindex 支持匹配表达式,可以应用正则;
2.patindex无位移限制;

关于freetext
1.FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。

  • FREETEXT语句的语法格式为:FREETEXT({column | * },‘freetext_string’)

  • 举例:
    查A表,在B列和C列中,找包含D的字符串的数据行

select B,C
from A
where freetext(*,‘D’)

备注: 每篇文章,做整理是为自己理出思路,以下链接是我参考的文章来源。
链接1:https://blog.csdn.net/caomiao2006/article/details/52075937
链接2:https://www.cnblogs.com/yangjinwang/p/4201121.html
链接3:https://www.jb51.net/article/20077.htm

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值