企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间代表不同权限的值,分别被‘,’分开,现在要取出具有某权限的所有成员列表。 创建表: 1 CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),name VARCHAR(20) NOT NULL,limits VARCHAR(50) NOT NULL); 添加数据: 1 INSERT INTO users(name, limits) VALUES('小张','1,2,12'); 2 INSERT INTO users(name, limits) VALUES('小王','11,22,32'); Mysql 中有些字段是字符串类型的,如何查找其中包含某些字符的记录呢? ## 方法一: ~~~ 1 mysql> SELECT * FROM users WHERE limits like "%2%"; 2 +----+----+--------+ 3 | id |name| limits | 4 +----+----+--------+ 5 | 1 |小张| 1,2,12 | 6 +----+----+--------+ 7 | 2 |小王|11,22,32| 8 +----+----+--------+ 9 2 row in set ~~~ 这样第二条数据不具有权限‘2’的用户也查出来了,不符合预期。所以就查阅了手册,利用mysql 字符串函数 find_in_set()。 ## 方法二: ~~~ 1 mysql> SELECT * FROM users WHERE find_in_set('2', limits); 2 +----+----+--------+ 3 | id |name| limits | 4 +----+----+--------+ 5 | 1 |小张| 1,2,12 | 6 +----+----+--------+ 7 1 row in set ~~~ 这样就能达到我们预期的效果,问题就解决了! 注意:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。