根据逗号拼接字符串查询
find_in_set的使用
在开发中遇到这样的数据库存储方式,字段的值都是逗号拼接的字符串,而我们需要根据传递的参数来判断该字段中是否有某个元素,如果有则列出此行数据:
- 考虑了性能的问题,首先考虑的是否可以再代码中处理这些业务,但显然不满足我们的需求;百思不得其解的情况下,使用了find_in_set函数,并且循环find_in_set查询是否包含某个值
以下为代码具体逻辑代码
mybatis.xml中代码如下:
<sql id="XXX">
<if test="casePremisesList.size()>0">
and (
<foreach collection="casePremisesList" item="premisies" index="index" >
<if test="index== 0">
find_in_set(#{premisies},cmt.case_premises)
</if>
<if test="index!= 0">
or find_in_set(#{premisies},cmt.case_premises)
</if>
</foreach>
)
</if>
</sql>
循环中查询判断是否是数组的第一位,决定是否前面拼接and或or,
这是我自己的业务逻辑,字段逗号拼接多个值,各个值之间的查询关系是or 各条件之间是and,如果不需要可以去掉。
注:转载请注明出处!