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