当前位置: 首页 > news >正文

MySQL中in(‘1,2,3‘)只取第一个id为1对应的数据

mysql 使用id in(‘1,2,3’) 的时候,只能查到id=1的数据的解决方法

前提:
t_user表有三条数据,id分别是1、2、3

场景1
查询:select * from t_user where id in(1,2,3)
结果:三条数据
正常

场景2
查询:select * from t_user where id in(‘1,2,3’)
结果:只有id=1的数据

为什么场景2只有1条结果返回?
为什么场景2入参是字符串的’1,2,3’只返回了1条数据,因为:
mysql 中执行 in函数的时候,会将入参字符串‘1,2’通过 CAST(‘1,2,3’ AS SIGNED) 方法优化,最终取第一个参数1,所以执行后的结果就是只有id=1的数据。

解决场景2问题
如何当入参是字符串‘1,2,3’的时候,还能查出三条数据呢
解决:用FIND_IN_SET方法,第一个参数放字段名,第二个参数放字符串的多个id
select * from t_user where FIND_IN_SET(id, ‘1,2,3’)

原因分析:

MySQL中in里面如果是字符串的话,会自动使用类似CAST(‘5,6,7’ AS INT)方法转化成int类型,对于数字开头的字符串来说,转为数字的结果就是截取前面的数字部分(本例中第一个逗号前的数据),对于开头部分不能截取出数字的字符串来说,转换的结果自然就是0了

相关文章:

  • 二级网站建设检查评比方案/百度售后客服电话24小时
  • 住房和城乡建设部门户网站/马鞍山seo
  • 建设网站的相关软件/一个新产品怎么推广
  • 网站与系统开发/网站优化推广平台
  • 专注网站建设微信开发/芜湖seo
  • 网站建设和管理心得/网站按天扣费优化推广
  • 什么是流形(manifold)、流形学习
  • MySQL索引-2聚集索引探讨
  • STM32串口通信-简单版
  • 数据结构:图的遍历
  • QT+OSG/osgEarth编译之十:MiniZip+Qt编译(一套代码、一套框架,跨平台编译,版本:MiniZip-1.1)
  • 青龙面板拉库命令大全最新【2022-10-13】
  • 阿里MySQL应用实战与性能调优手册惨遭泄漏,GitHub下载量超23K+
  • 基于树莓派的智能家居项目整理
  • 408 | 数据结构代码算法题模板技巧 之 单链表
  • Spring 注解开发下的依赖注入(自动装配)(引用类型)(普通类型)(加载properties文件)
  • 【IVI】车载设备硬件抽象层VHAL
  • docker学习-容器中的进程