mysql 查詢以逗號相隔的字串

2022-06-24 11:12:10 字數 1542 閱讀 1562

首先我們建立一張帶有逗號分隔的字串。

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 然後插入帶有逗號分隔的測試資料...