MySQL中替代Like模糊查询的函数

通常我们模糊查询都是用like关键字

比如:

查询name中包含 '王' 字 的 

SELECT name FROM employees where name LIKE '%王%' 

查询以 '王' 字开头的name

SELECT name FROM employees where name LIKE '王%' 

查询以 '王' 字结尾的name

SELECT name FROM employees where name LIKE '%王' 

 替代like的三种方式

1、使用LOCATE(substr,str)函数

SELECT name FROM employees where LOCATE('王',name)>0  // 相当于Like '%王%'(>0可省略)
SELECT name FROM employees where LOCATE('王',name)=1  // 相当于Like '王%'
SELECT name FROM employees where LOCATE('王',name)=0  // 相当于 NOT Like '%王%'

 2、使用POSITION(substr IN str)函数

SELECT name FROM employees where POSITION('王'IN name)>0 //相当于LIKE '%王%'
SELECT name FROM employees where POSITION('王'IN name)=1 //相当于LIKE '王%'
SELECT name FROM employees where POSITION('王'IN name)=0 //相当于 NOT LIKE '%王%'

 3、使用INSTR(str,substr)函数 跟LOCATE(substr,str)类似 只是参数位置换了

SELECT name FROM employees where INSTR(name,'王')>0 //相当于 like '%王%' (>0可省略)
SELECT name FROM employees where INSTR(name,'王')=1 //相当于 like '王%' 
SELECT name FROM employees where INSTR(name,'王')=0 //相当于 not like '%王%' 

4、使用FIND_IN_SET(str,strlist)     注意:该字段存的必须是多个值

 比如name字段中存的是(张三,李四,王五)这种数据

SELECT name FROM employees where FIND_IN_SET('王五',name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值