Mysql字符串字段中是否包含某个字符串,用 find_in_set
2024-08-07 20:11:19 229人阅读
有这样一个需求,在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’的用户也查出来了,不符合预期。所以就查阅了手册,利用mysql 字符串函数 find_in_set()。
方法二:
1 | mysql> SELECT * FROM users WHERE find_in_set( ‘2‘ , limits); |
这样就能达到我们预期的效果,问题就解决了!
注意:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。
Mysql字符串字段中是否包含某个字符串,用 find_in_set
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。