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 使用SQL语句修改表名的实现
Apr 07 MySQL
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 MySQL
关于mysql中时间日期类型和字符串类型的选择
Nov 27 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
WINDOWS下安装mysql 8.x 的方法图文教程
Apr 19 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
MySQL的prepare使用以及遇到的bug
May 11 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 #MySQL
一文了解MYSQL三大范式和表约束
MYSQL优化之数据表碎片整理详解
Innodb存储引擎中的后台线程详解
Apr 03 #MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
You might like
生成php程序的php代码
2008/04/07 PHP
php之readdir函数用法实例
2014/11/13 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
简单英文演讲稿
2014/01/01 职场文书
交通安全责任书范本
2014/07/24 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
三八妇女节标语
2014/10/09 职场文书
校运会广播稿
2015/08/19 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android
Nginx实现会话保持的两种方式
2022/03/18 Servers
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
详解OpenCV曝光融合
2022/04/29 Python
CSS的calc函数用法小结
2022/06/25 HTML / CSS