mysql使用instr达到in(字符串)的效果

 更新时间:2022年04月03日 11:07:52   作者:Java侠  
本文主要介绍了mysql使用instr达到in(字符串)的效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

使用mysql遇到一种情况:

需要查出id在某一个id拼接的字符串中的记录,这个时候用id in(id1,id2,...)行不通,因为in语法里面的参数是数字型的,应该用instr语法,instr(idsStr,id)其中idsStr=‘id1,id2,id3…’

下面举例说明:

1 建表

create table t_city (id int(10) ,name varchar(20));

这里写图片描述

insert into t_city values (1,'北京'),(2,'上海'),(3,'广州'),(4,'深圳'),(5,'杭州'),(12,'武汉');

这里写图片描述

2 查询

现在我需要查询id在字符串’1,2,3’里的城市,但是用in语法是不行的,因为in语法的参数不是字符串,可以用下面的方式来达到相同效果

select * from t_city where instr('1,2,3',id);

select * from t_city where instr(id,'1,2,3');

结果正确。但是如果我要查询id在字符串’3,4,5,12’里的城市,会发现结果出现偏差,查出了6个城市

select * from t_city where instr('3,4,5,12',id);

这里写图片描述

原来是由于武汉的id为12,而北京id为1,上海的id为2,根据instr的语义, id=1或2或12都能查出来,所以修改一下查法

select * from t_city where instr(',3,4,5,12,',concat(',',id,','));

这里写图片描述

总结:

此用法是对instr函数一个偏门的使用,在某些特定的场合下,可以用来达到in函数的效果,但是存在一定的局限性,比如要通过特殊字符使每个值构成唯一避免出现偏差,使用的时候要注意。

到此这篇关于mysql使用instr达到in(字符串)的效果的文章就介绍到这了,更多相关mysql使用instr替代in内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • windows下重启mysql的方法

    windows下重启mysql的方法

    这篇文章主要介绍了windows下重启mysql的方法,需要的朋友可以参考下
    2014-12-12
  • mysql 8.0.18 安装配置方法图文教程(linux)

    mysql 8.0.18 安装配置方法图文教程(linux)

    这篇文章主要介绍了linux下mysql 8.0.18 安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • MySQL优化常用的19种有效方法(推荐!)

    MySQL优化常用的19种有效方法(推荐!)

    关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂,下面这篇文章主要给大家介绍了关于MySQL优化常用的19种有效方法,需要的朋友可以参考下
    2022-03-03
  • mysql存储过程中使用游标的实例

    mysql存储过程中使用游标的实例

    使用MYSQL存储过程,可以实现诸多的功能,下面将为您介绍一个MYSQL存储过程中使用游标的实例
    2014-01-01
  • Window Docker 安装MySQL8.0的过程详解

    Window Docker 安装MySQL8.0的过程详解

    本文给大家介绍在Windows环境下安装Docker并配置MySQL容器的全流程介绍,过程中还涉及到文件映射和客户端连接MySQL的操作,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • MySQL 优化 index merge引起的死锁分析

    MySQL 优化 index merge引起的死锁分析

    这篇文章主要介绍了MySQL 优化 index merge引起的死锁分析,MySQL通过优化索引合并是遇到的死锁问题,下面具体分析需要的小伙伴可以参考一下
    2022-04-04
  • 如何优雅安全的备份MySQL数据

    如何优雅安全的备份MySQL数据

    这篇文章主要介绍了如何优雅安全的备份MySQL数据的相关资料,需要的朋友可以参考下
    2022-10-10
  • 关于MySQL中“Insert into select“ 的死锁情况分析

    关于MySQL中“Insert into select“ 的死锁情况分析

    这篇文章主要介绍了关于MySQL中“Insert into select“ 的死锁情况分析,死锁是指两个或者多个事务在同一资源上的相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象,需要的朋友可以参考下
    2023-05-05
  • window10中mysql8.0修改端口port不生效的解决方法

    window10中mysql8.0修改端口port不生效的解决方法

    mysql配置文件默认位置,端口号等信息需要在my.ini文件中修改,若修改安装位置的my-default文件文件或新建my.ini文件是不生效的,本文主要介绍了window10中mysql8.0修改端口port不生效的解决方法,感兴趣的可以了解一下
    2023-11-11
  • Navicat远程连接SQL Server并转换成MySQL步骤详解

    Navicat远程连接SQL Server并转换成MySQL步骤详解

    最近遇到一个需求是将SQL Server转换为 MySQL的格式,由于不想在本地安装 SQL Server,所以决定在远程的 Windows 服务器上安装,并在本地使用Navicat远程连接它,然而在实现过程中遇到了诸多问题,记录于此。感兴趣的朋友们下面来一起学习学习吧。
    2017-01-01

最新评论