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 05 MySQL
MySQL EXPLAIN输出列的详细解释
May 12 MySQL
MySQL触发器的使用
May 24 MySQL
MySQL之PXC集群搭建的方法步骤
May 25 MySQL
一文读懂navicat for mysql基础知识
May 31 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
Mysql事务索引知识汇总
Mar 17 MySQL
MySQL创建表操作命令分享
Mar 25 MySQL
mysql中关键词exists的用法实例详解
Jun 10 MySQL
MySQL约束(创建表时的各种条件说明)
Jun 21 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 MySQL
MySQL生成千万测试数据以及遇到的问题
Aug 05 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 #MySQL
一文了解MYSQL三大范式和表约束
MYSQL优化之数据表碎片整理详解
Innodb存储引擎中的后台线程详解
Apr 03 #MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
You might like
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
js完美的div拖拽实例代码
2014/01/22 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
python基于socket实现网络广播的方法
2015/04/29 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
python的dict判断key是否存在的方法
2020/12/09 Python
python实现无边框进度条的实例代码
2020/12/30 Python
Python 求向量的余弦值操作
2021/03/04 Python
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
web字体加载方案优化小结
2019/11/29 HTML / CSS
什么是.net的Remoting技术
2016/07/08 面试题
钳工实训报告总结
2014/11/04 职场文书
保洁员岗位职责
2015/02/04 职场文书
清洁工个人工作总结
2015/03/05 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
2015年教师国培感言
2015/08/01 职场文书
安全主题班会教案
2015/08/12 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技