mysql 多值用逗号隔开的查询及mybatis plus 中实现。
有几种方法:
1、like (这个有顺序,比如多值一定按顺序来处理)
select * from userinfo where company_id like '%1%'
以上是查询id: 1的用户信息。
2、find_in_set (可以查询单值)
select * from userinfo where FIND_IN_SET('2', company_id);
以上是查询id: 2的用户信息。
3、正则匹配
select * from userinfo where CONCAT(',',company_id,',') REGEXP ',(2|3),';
以上是查询id: 2或者3 的用户信息。
以上参考:https://blog.csdn.net/weixin_47324958/article/details/128405165
在java中mybatis plus中实现查询功能:
QueryWrapper<Userinfo> queryWrapper = new QueryWrapper<>();
//单值 queryWrapper.apply(userinfo.getCompanyIds() != null && !userinfo.getCompanyIds().equals(""), "FIND_IN_SET ('" + userinfo.getCompanyIds() + "',company_id)"); //多值 queryWrapper.apply(userinfo.getCompanyIds() != null && !userinfo.getCompanyIds().equals(""), "CONCAT(',',company_id,',') REGEXP ',(" +company_ids+ "),'");// 1|2
注意,多值要以“|”来隔开。
道法自然