永发信息网

来个朋友帮忙解决下MYSQL查询中字段带逗号分割符的问题

答案:1  悬赏:30  手机版
解决时间 2021-03-20 13:40
来个朋友帮忙解决下MYSQL查询中字段带逗号分割符的问题
最佳答案
?

首先我们建立一张带有逗号分隔的字符串。
CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCHAr(20) NOT NULL,pnum VARCHAr(50) NOT NULL);

然后插入带有逗号分隔的测试数据
INSERT INTO test(pname,pnum) VALUES('产品1','1,2,4');
INSERT INTO test(pname,pnum) VALUES('产品2','2,4,7');
INSERT INTO test(pname,pnum) VALUES('产品3','3,4');
INSERT INTO test(pname,pnum) VALUES('产品4','1,7,8,9');
INSERT INTO test(pname,pnum) VALUES('产品5','33,4');

查找pnum字段中包含3或者9的记录
mysql> SELECt * FROM test WHERe find_in_set('3',pnum) OR find_in_set('9',pnum);
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 3 | 产品3 | 3,4 |
| 4 | 产品4 | 1,7,8,9 |
+----+-------+---------+
2 rows in set (0.03 sec)

使用正则
mysql> SELECt * FROM test WHERe pnum REGEXP '(3|9)';
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 3 | 产品3 | 3,4 |
| 4 | 产品4 | 1,7,8,9 |
| 5 | 产品5 | 33,4 |
+----+-------+---------+
3 rows in set (0.02 sec)
这样会产生多条记录,比如33也被查找出来了,不过MYSQL还可以使用正则,挺有意思的

find_in_set()函数返回的所在的位置,如果不存在就返回0
mysql> SELECt find_in_set('e','h,e,l,l,o');
+------------------------------+
| find_in_set('e','h,e,l,l,o') |
+------------------------------+
| 2 |
+------------------------------+
1 row in set (0.00 sec)

还可以用来排序,如下;
mysql> SELECT * FROM TEST WHERe id in(4,2,3);
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 2 | 产品2 | 2,4,7 |
| 3 | 产品3 | 3,4 |
| 4 | 产品4 | 1,7,8,9 |
+----+-------+---------+
3 rows in set (0.03 sec)

如果想要按照ID为4,2,3这样排序呢?
mysql> SELECt * FROM TEST WHERe id in(4,2,3) ORDER BY find_in_set(id,'4,2,3');
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 4 | 产品4 | 1,7,8,9 |
| 2 | 产品2 | 2,4,7 |
| 3 | 产品3 | 3,4 |
+----+-------+---------+
3 rows in set (0.03 sec)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
通常一部国产电视剧,进入配音阶段之后,最快
南京到合肥过境费多少
最近很火的最帅90后新闻主播李泽鹏的新浪微博
请教严重走水如何钓鱼?怎么调漂钓跑铅?
用唯物辩证法说明怎样对待传统文化用唯物
我想买一辆火车
热火功夫麻辣烫高唐店在什么地方啊,我要过去
无霜冰箱需不需要除冰。
这5道填空题,急啊
健身用的划船机(划船器)贵的和便宜的差别在
女生喜欢什么样的肌肉男
完美国际MM.MG.WX.FS.CK.WS.YJ.SS每升一级血
windows10怎么打开蓝牙
妇科白带分泌物常规检查都查哪些
请问双开是不是怎么弄,谢谢
推荐资讯
剧组这么累为什么这么多人想跟组
万能遥控器对东洋空调代码是多少
我是长春理工应届本科毕业生,收到的Offer为
皮衣搭配什么内搭好看
有正在过奥复康的吗?效果怎样?
觉得自己的性格越来越古怪,想让人关心又怕束
南京师范大学中北学院 会计学怎么样
家里想买一台实用性比较强的7坐SUV,朋友推荐
在广发银行转账到农业银行大概多久到账
俊派d60可以加装定速巡航吗?
请问,为什么我编辑好的博客,保存后,再上线
生存战争怎么换材质包
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?