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 13 MySQL
详解MySQL数据库千万级数据查询和存储
May 18 MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 MySQL
MySQL分库分表详情
Sep 25 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
将MySQL的表数据全量导入clichhouse库中
Mar 21 MySQL
Mysql超详细讲解死锁问题的理解
Apr 01 MySQL
MySQL事务操作的四大特性以及并发事务问题
Apr 12 MySQL
mysql 获取相邻数据项
May 11 MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 #MySQL
一文了解MYSQL三大范式和表约束
MYSQL优化之数据表碎片整理详解
Innodb存储引擎中的后台线程详解
Apr 03 #MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
You might like
php生成年月日下载列表的方法
2015/04/24 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
JS跨域问题详解
2014/11/25 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
使用express来代理服务的方法
2019/06/21 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
实习自我鉴定范文
2013/10/30 职场文书
超市国庆节促销方案
2014/02/20 职场文书
青奥会口号
2014/06/12 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js