自学内容网 自学内容网

记sql字段逗号分隔,通过list查询

最近遇到了一个情况,在表中 unitIds 是使用逗号分隔的存储形式

idnameunit_idsother
11123,223,323
22223,323
33323
44123,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)!