MYSQL查詢某欄位中以逗號分隔的字串的方法

2021-08-25 14:50:21 字數 1587 閱讀 6769

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

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也被查詢出來了。

換一種方式

[sql]view plain

copy

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查詢某欄位中以逗號分隔的字串的方法

首先我們建立一張帶有逗號分隔的字串。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 然後插入帶有逗號分隔的測試資料...

MYSQL查詢某欄位中以逗號分隔的字串的方法

首先我們建立一張帶有逗號分隔的字串。create table test id int 6 not null auto increment,primary key id pname varchar 20 not null,pnum varchar 50 not null 然後插入帶有逗號分隔的測試資料...