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