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 相关文章推荐
多表查询、事务、DCL
Apr 05 MySQL
Windows10下安装MySQL8
Apr 06 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
解读MySQL的客户端和服务端协议
May 10 MySQL
MySQL EXPLAIN输出列的详细解释
May 12 MySQL
MySQL 使用自定义变量进行查询优化
May 14 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
MySQL触发器的使用
May 24 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
mysql函数全面总结
Nov 11 MySQL
防止web项目中的SQL注入
Dec 06 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 #MySQL
一文了解MYSQL三大范式和表约束
MYSQL优化之数据表碎片整理详解
Innodb存储引擎中的后台线程详解
Apr 03 #MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
You might like
Zerg建筑一览
2020/03/14 星际争霸
PHP 高手之路(一)
2006/10/09 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
js 匿名调用实现代码
2009/06/19 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
详解angular element()方法使用
2017/04/08 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
vue项目中微信登录的实现操作
2020/09/08 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
在python中做正态性检验示例
2019/12/09 Python
python实现控制台输出彩色字体
2020/04/05 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
Python 字典中的所有方法及用法
2020/06/10 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
全球性的在线购物网站:Zapals
2017/03/22 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
护士求职推荐信范文
2013/11/23 职场文书
商场主管竞聘书
2014/03/31 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
公司门卫岗位职责
2015/04/13 职场文书
交通安全温馨提示语
2015/07/14 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python