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创建索引需要了解的
Apr 08 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
Aug 23 MySQL
MySQL约束超详解
Sep 04 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
Mysql多层子查询示例代码(收藏夹案例)
Mar 31 MySQL
MySql重置root密码 --skip-grant-tables
Apr 11 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
MySQL串行化隔离级别(间隙锁实现)
Jun 16 MySQL
jdbc中自带MySQL 连接池实践示例
Jul 23 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 #MySQL
一文了解MYSQL三大范式和表约束
MYSQL优化之数据表碎片整理详解
Innodb存储引擎中的后台线程详解
Apr 03 #MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
You might like
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
运动会入场解说词
2014/02/07 职场文书
租房协议书
2014/09/12 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
办公室行政主管岗位职责
2015/04/09 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
小学班主任心得体会
2016/01/07 职场文书
五年级语文教学反思
2016/03/03 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers