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

mysql 查询问题。我想查询出包含一个逗号的记录。 你好,今天 你好,今天,风云

发布网友 发布时间:2022-04-30 03:44

我来回答

3个回答

懂视网 时间:2022-04-30 08:06

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

问题描述不清楚,如果你只想查出包含
“你好,今天”
SELECT * FROM table WHERE key LIKE '%你好,今天%'

如果你想查找出含有 “你好”并且同时含有“今天”,也就是所谓的 关键字 tag 查询,这类关键词在数据库中以半角逗号分隔,比如: key存储方式: 你好,今天,风云
一般 新闻类网站经常用到:
SELECT * FROM table WHERE CONCAT(',', key, ',') LIKE '%,你好,%' AND CONCAT(',', key, ',') LIKE '%,今天,%'
可以查出关键词同时含有 你好 今天,而不会查出 含有 你好啊,今天

对于你的问题,首选要描述清楚问题本身,其次要给出的的数据库内容存储结构追问你好,谢谢你的回答。是我没有描述清楚。我的意思是查询出只包含一个逗号的记录,‘你好,今天’只是我随便举的例子,要查询的记录,肯定不是固定的这些。比如查询 ‘张辽,诸葛圭’,‘荀藩,王衍,祝融’ 我只想要 ‘张辽,诸葛圭’ 这样的记录。

热心网友 时间:2022-04-30 06:32

SELECT * FROM table WHERE name REGEXP ‘[^,]*,[^,]*’;
好像是这样的,你试下
还有我不知道你的逗号是中文下还是英文下的.中文的话你自己改下
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
形容一个人眼睛好看的句子 男士银饰品牌推荐,景区银饰店推荐理由范文 哪些品牌的男士饰品质量好? 男士项链哪个品牌的口碑好? 男士手链品牌有哪些如何挑选男士手链 男士饰品有哪些品牌 客厅灯具尺寸选择以及风格 我的电脑 经常 蓝屏 怀疑主板时间长了 不行了 是amd的 求推荐 性价比... ...电脑店老板说我硬盘损坏过多。叫我换块固态硬盘。请帮我看看是不... 以童年的往事为话题,写一篇作文,不少于600字, die的不同词性 如名词,形容词,动词 die的两个形容词和名词 die的名词形式是什么? 华为手机忘了密码怎么解开 die的名词是什么? 深圳欢乐谷门票价格是多少 有没有学生票啊 那价格是多少拜托各位了 3Q 深圳欢乐谷学生票价 现在深圳欢乐谷还有学生票买吗?我是高一学生 请问深圳欢乐谷有学生票么?多少钱啊? 深圳欢乐谷门票价格有学生票吗 针放水里越叫越锈怎么回事 深圳欢乐谷学生票 针放水里会变绣吗?你们是相信科学还是迷信? 深圳欢乐谷门票多少钱一张?(有学生证) 针放水里一夜会锈吗? 欢乐谷可以用学生证吗 为什么绣花针泡水里一晚上两头会生锈 怎样购买深圳欢乐谷的学生票的? 一根绣花针放进一碗清水里 为什么大头锈小头不锈? 深圳欢乐谷现在的门票多少 有学生票吗 如果有是多少呢 谢谢 die的所有词性变化有哪些? 谁能告诉我die的名词,形容词,副词,动词,过去分词等等 die的几种不同形式及其用法 如death是它的名词形式,还有它的过去式,过去分词等是怎样的? die的名词和形容词和现在分词是什么 die 的两种名词形式 die是什么词性 词性转换 手工粘贴画卡纸猴子 苏州地理位置好的公寓有哪些? 苏州有哪些性价比高的公寓? 目前苏州公寓项目有哪些? 目前苏州总价100万以内的公寓项目有哪些在售? 目前苏州总价五六十万的公寓项目有哪些? 苏州房贷买了一套公寓再买商品房算首套房吗 目前苏州公寓市场怎么样? 苏州购买公寓需要满足的条件有哪些? 苏州住宅限购!我还能去买商住房吗? 苏州有没有七十年产权的公寓? 苏州红星国际公寓怎么样? 苏州现在的公寓项目值得投资吗?