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> SELECT * FROM test WHERE CONCAT(',',pnum,',') REGEXP '[^0-9]+[3|9][^0-9]+';
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 3 | 产品3 | 3,4 |
| 4 | 产品4 | 1,7,8,9 |
+----+-------+---------+
2 rows in set (0.01 sec)
问题解决。。。
最新文章
- python之I/O操作
- Rafy 领域实体框架示例(1) - 转换传统三层应用程序
- 【读书笔记】Ninject 在MVC5中的使用
- Mac Pro 使用 ll、la、l等ls的别名命令
- 通过编程发现Java死锁
- Homebrew
- 使用 IntelliJ IDEA 2016和Maven创建Java Web项目的详细步骤及相关问题解决办法
- zju 2972 Hurdles of 110m(简单的dp)
- commons-io源码阅读心得
- SQL Sever2008 新手入门第一天安装软件
- NancyFx 2.0的开源框架的使用-Stateless(二)
- C#列表页面后台代码
- ffmpeg笔记
- FreeSWITCH IVR中lua调用并执行nodejs代码
- pread和pwrite函数
- [leetcode]215. Kth Largest Element in an Array 数组中第k大的元素
- vs2013中,自定义mvc 添加视图脚手架
- [C#]嵌入互操作类型
- centos7 开放mongodb端口
- 软工 · 第十一次作业 - Alpha 事后诸葛亮(团队)