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_mode修改不生效的原因及解决
May 07 MySQL
浅谈mysql执行过程以及顺序
May 12 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
MySQL约束超详解
Sep 04 MySQL
mysql查询结果实现多列拼接查询
Apr 03 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
MySQL查询日期时间
May 15 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 #MySQL
一文了解MYSQL三大范式和表约束
MYSQL优化之数据表碎片整理详解
Innodb存储引擎中的后台线程详解
Apr 03 #MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
You might like
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
PHP代码优化技巧小结
2015/09/29 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
js实现验证码功能
2020/07/24 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
Python enumerate索引迭代代码解析
2018/01/19 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
《金钱的魔力》教学反思
2014/02/24 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
元旦标语大全
2014/10/09 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android