mysql中find_in_set函数解决多级id查找问题

数据库中某个字段我以字符串存储,同时又以","隔开的。如果想要查询这个字段中包含某个字符串该怎么查询?如果使用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的

原文地址:https://www.cnblogs.com/kiwi-deng/p/12868699.html