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


Posted in MySQL onApril 03, 2022

使用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));

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

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

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

2 查询

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

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

mysql使用instr达到in(字符串)的效果
结果正确。但是如果我要查询id在字符串’3,4,5,12’里的城市,会发现结果出现偏差,查出了6个城市

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

mysql使用instr达到in(字符串)的效果
原来是由于武汉的id为12,而北京id为1,上海的id为2,根据instr的语义, id=1或2或12都能查出来,所以修改一下查法

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

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

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

MySQL 相关文章推荐
MySQL 表空间碎片的概念及相关问题解决
May 07 MySQL
MySQL 自定义变量的概念及特点
May 13 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 MySQL
MySQL系列之二 多实例配置
Jul 02 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
MySQL利用UNION连接2个查询排序失效详解
Nov 20 MySQL
浅谈如何保证Mysql主从一致
Mar 13 MySQL
mysql insert 存在即不插入语法说明
Mar 25 MySQL
mysql的单列多值存储实例详解
Apr 05 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 #MySQL
一文了解MYSQL三大范式和表约束
MYSQL优化之数据表碎片整理详解
Innodb存储引擎中的后台线程详解
Apr 03 #MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
You might like
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
python获取本机mac地址和ip地址的方法
2015/04/29 Python
深入浅析Python中的yield关键字
2018/01/24 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
音乐学个人的自荐书范文
2013/11/26 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
毕业生自荐书
2014/02/02 职场文书
音乐教学随笔感言
2014/02/19 职场文书
意向协议书范本
2014/04/23 职场文书
硕士学位论文评语
2014/12/31 职场文书
欢送会主持词
2015/07/01 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android