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

 更新时间:2023年08月31日 09:27:06   作者:Once0311  
这篇文章主要介绍了MySQL中替代Like模糊查询的函数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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)

MySQL代替like模糊查询更高效的方法

MySQL-locate()函数

LOCATE(substr,str,pos)

返回substr字符串在str里pos(起始位置)出现的位置,没有返回0

注:pos必须大于第一次出现的位置,才能显示第二次出现的位置

直接用like查询效率较低:

SELECT id,vari_sku,prod_s_id,prod_s_sku from prod_sync_s_shopee where vari_sku LIKE '%+%';

用locate()函数的替代写法:

SELECT id,vari_sku,prod_s_id,prod_s_sku from prod_sync_s_shopee where locate('+',prod_sync_s_shopee.vari_sku) <> 0;

其他函数:

  • POSITION()
  • INSTR()
  • FIND_IN_SET()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Ubuntu18.04 安装mysql8.0.11的图文教程

    Ubuntu18.04 安装mysql8.0.11的图文教程

    本文通过图文并茂的形式给大家介绍了Ubuntu18.04 安装mysql8.0.11的方法,非常不错,具有一定的参考借鉴价值,需要的的朋友参考下吧
    2018-07-07
  • 不使用MySQL数据库的五个给力理由解析

    不使用MySQL数据库的五个给力理由解析

    众所周知,MySQL数据库虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。
    2011-03-03
  • MySQL窗口函数OVER使用示例详细讲解

    MySQL窗口函数OVER使用示例详细讲解

    这篇文章主要介绍了MySQL窗口函数OVER()用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • JDBC如何连接mysql

    JDBC如何连接mysql

    这篇文章主要介绍了JDBC如何连接mysql问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • MySql实现分布式锁详解

    MySql实现分布式锁详解

    这篇文章主要为大家详细介绍了如何使用本地MySql实现一把分布式锁,以及Mysql实现分布式锁的原理是怎么样的,有需要的小伙伴可以了解下
    2024-11-11
  • MySQL在Linux系统中隐藏命令行中的密码的方法

    MySQL在Linux系统中隐藏命令行中的密码的方法

    这篇文章主要介绍了MySQL在Linux系统中隐藏命令行中的密码的方法,作者利用简单的C程序实现,需要的朋友可以参考下
    2015-06-06
  • MySQL 百万级数据的4种查询优化方式

    MySQL 百万级数据的4种查询优化方式

    本文讲解了MySQL 百万级数据的4种查询优化方式,大家可以根据自身需求,选择适合自己的优化方式
    2021-06-06
  • MySQL如何优雅的备份账号相关信息

    MySQL如何优雅的备份账号相关信息

    这篇文章主要介绍了MySQL如何优雅的备份账号相关信息,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • MySQL基本操作语句小结

    MySQL基本操作语句小结

    这篇文章主要介绍了MySQL的基本操作语句,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-07-07
  • mysql里CST时区的坑及解决

    mysql里CST时区的坑及解决

    这篇文章主要介绍了mysql里CST时区的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10

最新评论