大家都知道,当我们mysql需要使用模糊查询的时候,往往会使用like去做相关查询条件的模糊匹配,但是很多场景下,使用locate会获取同样的效果

create table user(id int primary key auto_increment,name varchar(18),description varchar(255)
) charset=UTF8;select * from user order by id;


测试环境插入如上数据:
场景1,我么需要查询所有名字中含有 王 的所有数据,用like很简单

select * from user where name like '%王%' order by id;

那么使用locate如何去实现呢,首先我们先看看locate的用法,如下为官方给出的该函数的详细使用说明

意思也比较简单

LOCATE(substr,str)
LOCATE(substr,str,pos)

1,从str的起始位置开始匹配str中的substr串,如果匹配上,返回下标,如果没有匹配上,返回0,如果substr或者str为null的时候,返回null
2,表示从下标为pos(int值)处开始匹配

使用locate实现上述效果:

select * from user where locate('王',name)

但是如果我现在需求是找出所有名字中含有王,但是不姓王的人找出来,使用like就不太好实现了,但是使用locate就很容易实现,我们用下面那种实现方式如下

select * from user where locate('王',name,2)


我们从第2个字符串开始匹配,就很把所有姓王的给过滤掉了

关于locate的用法如上,结合具体的业务,配合合理的数据库设计,可以很容易避开复杂的like查询。

问题:但是有一种说法是在同样数据量情况下,使用locate查询比使用like效率要高,但是查看语句的执行计划,二者是一模一样的,不明白是为什么,官方也没找到相关说明,还望知道的大神可以留言一起交流一波!

谈谈mysql locate函数相关推荐

  1. mysql LOCATE() 函数 模糊查询,类似like %%

    mysql LOCATE() 函数 模糊查询,类似like '%%' 查询的字符串 前面添加 BINARY ,区分大小写 SELECT * FROM `ce1` WHERE locate(BINARY ...

  2. mysql LOCATE函数

    查看原文 locate(string,str,pos) select * from test where locate('test',str,1); string在str出现的位置从pos开始 类似p ...

  3. mysql locate用法_MySQL locate函数和substring函数使用

    一.locate函数使用 返回子串 substr在字符串str 中第一次出现的位置.如果子串substr在str中不存在,返回值为0:mysql> SELECT LOCATE('bar','fo ...

  4. MYSQL ifnull 函数 、if判断 、case when、 locate函数

    1.MYSQL  ifnull 函数 .if判断 .case when. locate (1).IFNULL(expr1,expr2) 如果expr1为空(即NULL),返回expr2,如果expr1 ...

  5. mysql locate用法,LOCATE()函数如何与MySQL WHERE子句一起使用?

    当我们将LOCATE()函数与MySQL WHERE子句一起使用时,我们需要将子字符串作为第一个参数,并将表的列名作为第二个参数,以及比较运算符.以下是使用"学生"表进行演示的示例 ...

  6. mysql篇-mysql的locate函数

    mysql的查询时,经常可能会出现条件传参时,条件是一个由多个参数组合而成的字符串,比如,usr_id='id1,id2,id3,id4',此类参数在使用时,还要使用字符串拆分,变成数组,再使用in函 ...

  7. sql server怎么实现mysql 中的locate函数

    LOCATE()是判断字符串中是否包含字符串的函数 MySQL中LOCATE()函数直接用在sqlServer是不行的,需要替换成CHARINDEX 例如: select * from sys_dep ...

  8. 谈谈mysql优化_浅谈MySQL SQL优化

    本文首发于个人微信公众号<andyqian>,期待你的关注 前言 有好几天没有写文章了,实在不好意思.之前就有朋友希望我写写MySQL优化的文章.我迟迟没有动笔,主要是因为,SQL优化这个 ...

  9. mysql算法函数_十个实用MySQL函数

    本文首发于个人微信公众号<andyqian>,期待你的关注! 前言 继上一次<十个实用MySQL命令>后,今天奉上十个实用MySQL函数.下面都是一些比较常用且简单的函数,在工 ...

最新文章

  1. 17.8.17第八次测试
  2. 解决ubuntu中遇到“E:Unable to locate package rar” 的问题
  3. openCV中的findHomography函数分析以及RANSAC算法的详解(源代码分析)
  4. 图灵机器人-Java/Android
  5. 软件测试和系统试验,实验四 软件系统性测试
  6. 30分钟学玩转RabbitMQ
  7. dojo 的DOM操作 dojo/dom
  8. TypeError: 'numpy.ndarray' object is not callable
  9. Jenkins配置工具
  10. java aop管理权限_基于spring aop 权限管理系统原型 - andyj2ee - BlogJava
  11. [转载] python numpy 笔记(一)
  12. 几个例子弄懂JS 的setInterval的运行方式
  13. 区块链软件公司:供应链高本钱的运用区块链技能是否值得?
  14. BUUCTF Misc Page2-6部分题目
  15. 盈建科中地震波_[GMS][地震波][选波]YJK地震波反应谱分析与地震波选取
  16. python 求极值
  17. SQLite数据库使用(sqlite3 c++)
  18. pandas 学习task08文本数据
  19. 如何用计算机看苹果手机的文件,如何在电脑上管理iphone文件?
  20. linux下安装MySQL-server-5.6.28

热门文章

  1. https://blog.csdn.net/watermelon_learn/article/details/88902117
  2. 怎么知道自己适合做什么?
  3. iptables白名单
  4. 关于电视机中DTV码流对android的Timer的影响
  5. Xcode8 支持 iOS7及以下版本
  6. RK3288 Android7.1 接USB摄像头后扬声器无声音
  7. 内存卡不小心格式化后怎么找回丢失数据?
  8. Linux运维课程 第一阶段 重难点摘要(二)网络基础
  9. 【转】达摩祖师《悟性论》
  10. 液晶面板价格继续下跌,中国面板企业能否盈利面临考验