sql like用法,like效率,代码实现
在开发过程中,我们经常用到like关键字,但是使用like进行匹配时,效率非常的低下,而环境逼迫情况下,却不得不用这个关键字。
1、sql like用法
like支持 ASCII 模式匹配和 Unicode 模式匹配。如果所有参数(match_expression、pattern 和 escape_character,如果存在)均为 ASCII 字符数据类型,则执行 ASCII 模式匹配。如果任何一个参数为 Unicode 数据类型,则所有参数都将转换为 Unicode,并执行 Unicode 模式匹配。当 Unicode 数据(nchar 或 nvarchar 数据类型)与 LIKE 一起使用时,尾随空格有意义;但对非 Unicode 数据,尾随空格则没有意义。Unicode LIKE 与 ISO 标准兼容。ASCII like与 SQL Server 的早期版本兼容。
(1). LIKE '%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、
Stringer)。
(2). LIKE '%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、
Green、McBadden)。
(3). LIKE '_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、
Sheryl)。
(4). LIKE '[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson
(如 Carson)。
(5). LIKE '[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字
母开头的所有名称(如 Ringer)。
(6). LIKE 'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如
MacFeather)。
2、like效率
如果数据量比较少like的效率不会很低,可是如果是在上百万乃至上千万条文本数据中进行like匹配时,所花时间在实际应用中往往不能接受的。
根据自己的工作经验,总结了like的一些使用经验:
如果只是长度不大的字符串,可以用建立索引的方式来提高查询的效率,也可以考虑使用charindex()函数来替代like。
如果是大文本的数据,建议使用全文索引。
没有评论:
发表评论