mysql 多值用逗号隔开的查询及mybatis plus 中实现。

发布时间 2024-01-07 11:45:56作者: jiduoduo

有几种方法:

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

注意,多值要以“|”来隔开。