首先我們建立一張帶有逗號分隔的字串。
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)
問題解決。。。
MySql 查詢以逗號分隔的字串的方法(正則)
現資料庫表中某個字段儲存的值為 01,07,08 需要sql去查詢下表中到相應的名稱 nnd,一點思路都木有,想了老久,突然想到了正規表示式.啊哈哈哈.1 最開始想到的是find in set 查詢欄位中包含01,07,08的記錄 select from test where find in set...
MYSQL查詢某欄位中以逗號分隔的字串的方法
首先我們建立一張帶有逗號分隔的字串。create table test id int 6 not null auto increment,primary key id pname varchar 20 not null,pnum varchar 50 not null 然後插入帶有逗號分隔的測試資料...
MYSQL查詢某欄位中以逗號分隔的字串的方法
首先我們建立一張帶有逗號分隔的字串。create table test id int 6 not null auto increment,primary key id pname varchar 20 not null,pnum varchar 50 not null 然後插入帶有逗號分隔的測試資料...