有這樣一個需求,在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’的用戶也查出來了,不符合預期。因此就查閱了手冊,利用mysql 字符串函數 find_in_set()。code
方法二:索引
1 |
mysql> SELECT * FROM users WHERE find_in_set( '2' , limits); |
這樣就能達到咱們預期的效果,問題就解決了!字符串
注意:mysql字符串函數 find_in_set(str1,str2)函數是返回str2中str1所在的位置索引,str2必須以","分割開。get