mysql中包含查询的五种方法总结

 更新时间:2023年08月07日 10:15:07   作者:夏目不听话  
这篇文章主要给大家介绍了关于mysql中包含查询的五种方法, 在MySQL中,包含语句是一种用来包含其他查询语句的语句,通常用在WHERE语句中,需要的朋友可以参考下

场景:数据库表字段存的是一个字符串,用“,”分隔,查询的sql需要匹配其中某一段字符串

测试的表数据如下图:

在这里插入图片描述

方法1:使用LIKE

LIKE关键字用于模糊匹配,可以在查询中使用通配符进行匹配。%表示匹配任意多个字符,_表示匹配一个字符。

SELECT * FROM test t WHERE t.is_deleted = 0 AND ((t.key LIKE "%TEST_KEY_1%") OR (t.key LIKE "%TEST_KEY_2%"))

方法2:使用INSTR

INSTR函数用于查找子字符串在父字符串中的位置,如果找到则返回对应的位置,如果没找到则返回0。其中substr参数表示要查找的子字符串,str参数表示父字符串。

SELECT * FROM test t WHERE t.is_deleted = 0 AND (INSTR(t.key,"TEST_KEY_1") OR INSTR(t.key,"TEST_KEY_2"))

方法3:使用LOCATE

LOCATE函数和INSTR函数类似,用于查找子字符串在父字符串中的位置,但可以指定从父字符串的哪个位置开始查找。如果找到则返回对应的位置,如果没找到则返回0。其中substr参数表示要查找的子字符串,str参数表示父字符串,pos参数表示从哪个位置开始查找。

SELECT * FROM test t WHERE t.is_deleted = 0 AND (LOCATE("TEST_KEY_1",t.key) OR LOCATE("TEST_KEY_2",t.key))

方法4:使用POSITION

POSITION函数和INSTR函数类似,用于查找子字符串在父字符串中的位置,如果找到则返回对应的位置,如果没找到则返回0。其中substr参数表示要查找的子字符串,str参数表示父字符串。

SELECT * FROM test t WHERE t.is_deleted = 0 AND (POSITION("TEST_KEY_1" IN t.key) OR POSITION("TEST_KEY_2" IN t.key))

这四种方法返回的结果是一样的,如下图:

在这里插入图片描述

如果想要精准匹配的话,上面四种就不适用了,可以使用方法5

方法5:使用FIND_IN_SET

FIND_IN_SET函数用于在一个逗号分隔的字符串集合中查找一个子字符串是否存在。如果存在,则返回对应的位置,如果不存在,则返回0。其中str参数表示要查找的子字符串,set参数表示用逗号分隔的字符串集合。

SELECT * FROM test t WHERE t.is_deleted = 0 AND (FIND_IN_SET("TEST_KEY_1",t.key) OR FIND_IN_SET("TEST_KEY_2",t.key))

在这里插入图片描述

总结

到此这篇关于mysql中包含查询的五种方法的文章就介绍到这了,更多相关mysql包含查询方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mac下mysql 5.7.17 安装配置方法图文教程

    Mac下mysql 5.7.17 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.17 源码编译安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MySQL 四种连接和多表查询详解

    MySQL 四种连接和多表查询详解

    这篇文章主要介绍了MySQL多表查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • MySql中取前几行数据使用limit来完成

    MySql中取前几行数据使用limit来完成

    在mysql中是没有top关键字的,不过可以用limit来完成此功能,下面举例为大家详细介绍下它的使用方法,不会的朋友可以学习下
    2013-07-07
  • MySQL 在触发器里中断记录的插入或更新?

    MySQL 在触发器里中断记录的插入或更新?

    MySQL 不象其它有些数据库可以在触发器中抛出异常来中断当然触发器的执行以阻止相应的SQL语句的执行。在MySQL的目录版本中还无法直接抛出异常。这样我们如何实现呢?
    2009-07-07
  • CentOS 安装redis和MySQL

    CentOS 安装redis和MySQL

    这篇文章主要介绍了CentOS 安装redis和MySQL的相关资料,需要的朋友可以参考下
    2019-08-08
  • 将mysql脚本转化为oracle脚本的攻略与细节点

    将mysql脚本转化为oracle脚本的攻略与细节点

    前段时间公司项目数据库需要从mysql转为oracle,所以需要修改下原有的mysql脚本,这篇文章主要给大家介绍了关于将mysql脚本转化为oracle脚本的攻略与细节点,需要的朋友可以参考下
    2023-09-09
  • mysql格式化字符串长度不够补0问题

    mysql格式化字符串长度不够补0问题

    这篇文章主要介绍了mysql格式化字符串长度不够补0问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • mysql数据库中1045错误的解决方法

    mysql数据库中1045错误的解决方法

    这篇文章主要为大家详细介绍了MySQL数据库中1045错误的解决方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • MySQL合并查询结果的实现

    MySQL合并查询结果的实现

    本文主要介绍了MySQL合并查询结果的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • MySQL9.0默认路径安装下重置root密码

    MySQL9.0默认路径安装下重置root密码

    本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02

最新评论