记sql字段逗号分隔,通过list查询
最近遇到了一个情况,在表中 unitIds 是使用逗号分隔的存储形式
id | name | unit_ids | other |
---|---|---|---|
1 | 1 | 123,223,323 | … |
2 | 2 | 223,323 | … |
3 | 3 | 323 | … |
4 | 4 | 123,323 | … |
在查询条件中unit_ids 被作为一个条件来查询;
出现两种情况:
unit_id 的查询条件是否在unit_ids 中,可以使用FIND_IN_SET 来判断是否存在
select * from table_name where find_in_set('123', unit_ids);
如果查询的unit_id 也是多个又该如何解决呢?
这时我们可以使用REGEXP来进行匹配
select * from table_name where unit_ids regexp '(^|,)(123|223)(,|$)';
在xml就可以这样写
select * from table_name
where
unit_ids regexp concat('(^|,)',
<foreach collection="v.unitIdList" open="(" separator="|" close=")" item="unitId">
#{unitId}
</foreach>
,'(,|$)')
最后:需要注意的是REGEXP和FIND_IN_SET 都不走索引喔。
原文地址:https://blog.csdn.net/gd898989/article/details/137773701
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!