数据库中某个字段我以字符串存储,同时又以","隔开的。如果想要查询这个字段中包含某个字符串该怎么查询?如果使用Like的话,想要查询包含2这个字符串的,会把包含12、22的值查询出来,
后来发现了find_in_set()函数。
MySQL手册中find_in_set函数的语法解释:
FIND_IN_SET(str,strlist)
str 要查询的字符串
strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22),我们来试试
CREATE TABLE users( id int(6) NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, -- 权限id集合 authority_ids VARCHAR(50) NOT NULL, PRIMARY KEY (id) ); INSERT INTO users(name, authority_ids) VALUES('张三','1,2,12'); INSERT INTO users(name, authority_ids) VALUES('李四','11,22,32');
使用like查询,
SELECT * FROM users WHERE authority_ids LIKE '%2%';
结果把包含22和32的都查出来了
使用FIND_IN_SET查询,
SELECT * FROM users WHERE FIND_IN_SET(2,authority_ids);
结果仅仅是查询到了包含2的