MySQL字符串处理之一个字段包含多个ID的解决

如果在MySQL中一个表中存着一个字段包含多个Id,应该如何处理呢,下面就为您介绍这种MySQL字符串问题的处理方法,希望对您学习MySQL字符串方面能有所帮助。

创新互联公司主营博爱网站建设的网络公司,主营网站建设方案,app软件开发,博爱h5微信小程序开发搭建,博爱网站营销推广欢迎博爱等地区企业咨询

1、新建表

 
 
 
  1. drop table if exists Category;
  2. create table Category
  3. (
  4.     cateId                         int(5)                         not null AUTO_INCREMENT,
  5.     chiName                        varchar(80),
  6.    primary key (cateId)
  7. );
  8. drop table if exists OpenRecord;
  9. create table OpenRecord
  10. (
  11.     opreId                         int(5)                         not null AUTO_INCREMENT,
  12.     cateIds                        varchar(80),
  13.    primary key (opreId)                    
  14. );

2、初始化数据

 
 
 
  1. insert Category(chiName) values ('fish'),('shrimp'),('crab'),('tiger');
  2. insert OpenRecord(cateIds) values('1,2');
  3. insert OpenRecord(cateIds) values('2,3');

3、查询OpenRecord中Id为1包括的Category。

#错误的方法

 
 
 
  1. select * 
  2.     from Category
  3.     where (select INSTR(cateIds,cateId) from OpenRecord where opreId=1)

#正确的方法

 
 
 
  1. select * 
  2.     from Category
  3.     where (select FIND_IN_SET(cateId,cateIds) from OpenRecord where opreId=1)

用INSTR会出现当ID大于10的时候,查ID为1的数据,会把1,10,11,12......的都拿出来。

4、扩展会出现的问题。
用FIND_IN_SET可以解决ID是用","号隔开的问题。然而会有另外的两种情况。

A、当ID不包含",",但是用别的符号分开时,如用"|"。我们有如下的解决办法

 
 
 
  1. select * 
  2.     from Category
  3.     where (select FIND_IN_SET(cateId,REPLACE(cateIds,'|',',')) from OpenRecord where opreId=1)

以上就是该MySQL字符串问题的处理方法。

文章标题:MySQL字符串处理之一个字段包含多个ID的解决
当前网址:http://www.csdahua.cn/qtweb/news21/229021.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网