注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

红尘若梦

生活的色彩

 
 
 

日志

 
 

MySql函数INSTR、LOCATE、POSITION对比LIKE的效率问题及扩展用法  

2016-03-18 15:39:25|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
大家都可能很熟悉这个函数函数,不过一般情况下我们并不会使用该函数,反而以之代替使用Like。如想查找某字段是否包含某些字符,可以使用如下代码:

select * from article where content like '%593668.com%';

这个相信大家都很明白,查找字段content包含593668.com文章。它其实还有几个等价表达式:

select * from article where instr(content,'593668.com');

select * from article where instr(content,'593668.com')>0;#此表达式也可

select * from article where locate('593668.com',content);

select * from article where locate('593668.com',content)>0;#此表达式也可

select * from article where position('593668.com' IN content);

select * from article where position('593668.com' IN content)>0;#此表达式也可

明白了吧,locate、position 和 instr 的差別只是参数的位置不同,三者是几乎一样的。而且就性能上来讲,也比用 like 稍快了一点点。
更进一步扩展它们的用法,其实还是可以发现,如果有需要要判断从那个位置开始包含某字符串,Like是完全做不到了,但是这三个函数却可以实现。
看完以上之后,不要跟我说,这种需求很小,其实有很多种情况下需要这种判断,比如如果首字母是需要大小,但是内容中错误将中间的字母也做了首字母大写,那么如果需要这种资料全部找出出来,Like函数就没用了,必须得用这三个函数,当然它们的用法绝不仅此,当然如果还更复杂条件的查询,那还是使用REGEXP函数会比较好。

  评论这张
 
阅读(110)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017