①、创建表
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 的记录
方法一:使用 find_in_set
SELECT * FROM test WHERE find_in_set(3,pnum) OR find_in_set(9,pnum);
方法二:使用正则
SELECT * FROM test WHERE pnum REGEXP (3|9);
这样会产生多条记录,33也被查找出来了。换一种方式:
SELECT * FROM test WHERE CONCAT(,,pnum,,) REGEXP[^0-9]+[3|9][^0-9]+";
CONCAT 用于将多个字符串连接成一个字符串,返回结果为连接参数产生的字符串。
mysql 第3.11章 查询-查询某字段中以逗号分隔的字符串的方法