Mysql字符串字段中是否包含某个字符串,用 find_in_set

有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间表明不一样权限的值,分别被‘,’分开,如今要取出具备某权限的全部成员列表。mysql

建立表:spring

1 CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),name VARCHAR(20) NOT NULL,limits VARCHAR(50) NOT NULL);

添加数据:sql

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()code

方法二:索引

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必须以","分割开。get

相关文章
相关标签/搜索