问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql 声明游标中需要传'1,3,4' 以逗号分隔的字符串,如何处理?

发布网友 发布时间:2022-04-08 02:47

我来回答

3个回答

懂视网 时间:2022-04-08 07:08

首先,我们创建一个逗号分隔字符串。
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) 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

MYSQL正在使用select发现现场记录方法,包括一个逗号分隔的字符串

标签:

热心网友 时间:2022-04-08 04:16

IN 操作符允许我们在 WHERE 子句中规定多个值。

SQL IN 语法
SELECT column_name(s)

FROM table_name
WHERE column_name IN (value1,value2,...)

IN 操作符实例
现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter')。

热心网友 时间:2022-04-08 05:34

楼主问题解决了吗?
我把参数拼接成xx='..' or xx='..'的形式,仍然不行,但是写死是可以的,不行只能放到程序里处理了。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 为什么我用小爱同学调电视台总是对不上啊,比如说调到*五台,结果调到了湖北卫视,如何解决? iphone怎么一边打电话一边录音 小爱同学故障? 小爱同学被入侵怎么解决? 你好,我想搞个菜鸟驿站快递怎么联系? 菜鸟驿站怎样绑定快递公司? 我想问下在同一个小区内可以有住宅楼房和商业公寓楼房两种吗? 苏州公寓房新楼盘 苏州外地户口可以在苏州购买公寓项目吗?公寓项目的产权是多少年呢? 苏州公寓房买卖税费怎么算 苏州的公寓是不是限购的?如果不是限购的,那么首付比例是多少? 苏州现在的公寓项目值得投资吗? 苏州红星国际公寓怎么样? 苏州有没有七十年产权的公寓? 苏州住宅限购!我还能去买商住房吗? 苏州购买公寓需要满足的条件有哪些? 目前苏州公寓市场怎么样? 苏州房贷买了一套公寓再买商品房算首套房吗 目前苏州总价五六十万的公寓项目有哪些? 目前苏州总价100万以内的公寓项目有哪些在售? 美国公司LLC,LLP,INC,COR...的区别 在美国公司实体中,Corporation 和 Incorporated 以及 LLC 有何区别? 请问公司名称里的“LLC”是什么意思? ERP中的LLC是什么意思? 什么是LLC的全称? 什么是s类公司,还有corporation与llc区别是什么? 外国人在美国注册公司可以注册什么类型的公司呢? 英国公司LLP是什么呢? 我有一对双胞胎女儿,我姓金,想取个好听的名字。最好是金子X格式的。预产期是明年3月底。 双胞胎女孩爸爸姓金 妈妈姓林 取什么名字好哪 在西安美国公司注册:有哪些类型可选 什么是英国公司LLP? 我想创业,对于风险投资有点疑问。 LLP和第四方物流是什么关系 美国对公司名称有什么要求? 美国公司名称取名有需要注意的地方吗? 强排燃气热水器的排烟可不可不装止逆阀而直接与排气扇并用一排气孔直通窗外 强排燃气热水器烟道管可以直接接入烟道吗?是否需要安装止逆阀?谢谢啦 东北安装燃气热水器要用止逆阀吗 能率热水器带不带止回阀