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

文章介绍了在SQL中除了使用LIKE关键字进行模糊查询外,还可以利用LOCATE,POSITION,INSTR函数以及FIND_IN_SET方法来实现不同的查询需求,如查找包含特定字符、以特定字符开头或结尾的记录。这些方法提供了更多灵活性和控制选项。
摘要由CSDN通过智能技术生成

通常我们模糊查询都是用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)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想静静码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值