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 相关文章推荐
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
MySQL的join buffer原理
Apr 29 MySQL
Mysql Online DDL的使用详解
May 20 MySQL
.Net Core导入千万级数据至Mysql的步骤
May 24 MySQL
Mysql数据库命令大全
May 26 MySQL
Navicat for MySQL的使用教程详解
May 27 MySQL
MySQL 时间类型的选择
Jun 05 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
MySQL约束(创建表时的各种条件说明)
Jun 21 MySQL
MySQL一劳永逸永久支持输入中文的方法实例
Aug 05 MySQL
Mysql如何查看是否使用到索引
Dec 24 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 #MySQL
一文了解MYSQL三大范式和表约束
MYSQL优化之数据表碎片整理详解
Innodb存储引擎中的后台线程详解
Apr 03 #MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
You might like
php adodb连接不同数据库
2009/03/19 PHP
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
Python中django学习心得
2017/12/06 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Python中过滤字符串列表的方法
2020/12/22 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
法学专业毕业生自荐信范文
2013/12/18 职场文书
关于运动会的广播稿
2014/09/22 职场文书
应聘教师自荐信
2015/03/26 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
建国大业观后感800字
2015/06/01 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android