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

2021-10-02 05:15:37 字數 2229 閱讀 3250

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

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,44

產品41,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,44

產品41,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,44

產品41,7,8,9

2 rows in set (0.01 sec)

再換一種方式

mysql>

select

*from oa_student_archives where concat(

',',pe_projects,

',')

like

'%,11,%'

;

這種方式也可以。

注意:

mysql>

select

*from test where concat(

',',pnum,

',')

regexp

'[^0-9]+[3|9][^0-9]+'

;

這種,當時小於10的資料搜尋是可以的,但是如果是大於10的,則不能用,原因我還不太清楚,有大神可以解釋下嗎?

總結如下:

1、select * from oa_student_archives where concat(』,』,pe_projects,』,』) like 『%,11,%』;

2、select * from oa_student_archives where find_in_set(『12』, pe_projects);

以上的兩個都可以用。

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