谈谈mysql locate函数
大家都知道,当我们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函数相关推荐
- mysql LOCATE() 函数 模糊查询,类似like %%
mysql LOCATE() 函数 模糊查询,类似like '%%' 查询的字符串 前面添加 BINARY ,区分大小写 SELECT * FROM `ce1` WHERE locate(BINARY ...
- mysql LOCATE函数
查看原文 locate(string,str,pos) select * from test where locate('test',str,1); string在str出现的位置从pos开始 类似p ...
- mysql locate用法_MySQL locate函数和substring函数使用
一.locate函数使用 返回子串 substr在字符串str 中第一次出现的位置.如果子串substr在str中不存在,返回值为0:mysql> SELECT LOCATE('bar','fo ...
- MYSQL ifnull 函数 、if判断 、case when、 locate函数
1.MYSQL ifnull 函数 .if判断 .case when. locate (1).IFNULL(expr1,expr2) 如果expr1为空(即NULL),返回expr2,如果expr1 ...
- mysql locate用法,LOCATE()函数如何与MySQL WHERE子句一起使用?
当我们将LOCATE()函数与MySQL WHERE子句一起使用时,我们需要将子字符串作为第一个参数,并将表的列名作为第二个参数,以及比较运算符.以下是使用"学生"表进行演示的示例 ...
- mysql篇-mysql的locate函数
mysql的查询时,经常可能会出现条件传参时,条件是一个由多个参数组合而成的字符串,比如,usr_id='id1,id2,id3,id4',此类参数在使用时,还要使用字符串拆分,变成数组,再使用in函 ...
- sql server怎么实现mysql 中的locate函数
LOCATE()是判断字符串中是否包含字符串的函数 MySQL中LOCATE()函数直接用在sqlServer是不行的,需要替换成CHARINDEX 例如: select * from sys_dep ...
- 谈谈mysql优化_浅谈MySQL SQL优化
本文首发于个人微信公众号<andyqian>,期待你的关注 前言 有好几天没有写文章了,实在不好意思.之前就有朋友希望我写写MySQL优化的文章.我迟迟没有动笔,主要是因为,SQL优化这个 ...
- mysql算法函数_十个实用MySQL函数
本文首发于个人微信公众号<andyqian>,期待你的关注! 前言 继上一次<十个实用MySQL命令>后,今天奉上十个实用MySQL函数.下面都是一些比较常用且简单的函数,在工 ...
最新文章
- 17.8.17第八次测试
- 解决ubuntu中遇到“E:Unable to locate package rar” 的问题
- openCV中的findHomography函数分析以及RANSAC算法的详解(源代码分析)
- 图灵机器人-Java/Android
- 软件测试和系统试验,实验四 软件系统性测试
- 30分钟学玩转RabbitMQ
- dojo 的DOM操作 dojo/dom
- TypeError: 'numpy.ndarray' object is not callable
- Jenkins配置工具
- java aop管理权限_基于spring aop 权限管理系统原型 - andyj2ee - BlogJava
- [转载] python numpy 笔记(一)
- 几个例子弄懂JS 的setInterval的运行方式
- 区块链软件公司:供应链高本钱的运用区块链技能是否值得?
- BUUCTF Misc Page2-6部分题目
- 盈建科中地震波_[GMS][地震波][选波]YJK地震波反应谱分析与地震波选取
- python 求极值
- SQLite数据库使用(sqlite3 c++)
- pandas 学习task08文本数据
- 如何用计算机看苹果手机的文件,如何在电脑上管理iphone文件?
- linux下安装MySQL-server-5.6.28
热门文章
- https://blog.csdn.net/watermelon_learn/article/details/88902117
- 怎么知道自己适合做什么?
- iptables白名单
- 关于电视机中DTV码流对android的Timer的影响
- Xcode8 支持 iOS7及以下版本
- RK3288 Android7.1 接USB摄像头后扬声器无声音
- 内存卡不小心格式化后怎么找回丢失数据?
- Linux运维课程 第一阶段 重难点摘要(二)网络基础
- 【转】达摩祖师《悟性论》
- 液晶面板价格继续下跌,中国面板企业能否盈利面临考验