MySQL之集合之间的查询

此为Spring Mapping层的策略
根据需求有以下查询情况:

  1. 判断一个元素是否在集合里面。
    可用 IN 判断,要求传入参数为集合,然后通过
 <foreach collection="List" item="i" index="index" open="(" close=")" separator=",">
 </foreach>

对集合进行整理。
另一个方法是使用 FIND_IN_SET 函数,这个要求传入参数为以逗号分隔的字符串。
如 FIND_IN_SET(em,emlist) , FIND_IN_SET(‘1’,‘1,2,3’ ) 会回传元素所在索引。不存在返回0。

  1. 判断一个集合里面是否有另一个集合的元素。
    使用策略也可以传列表操作,使用上面foreach进行操作每一个元素是否在另一个。
    另外就是使用正则
select concat('1,4', ',') regexp concat(replace('1,2,3',',',',|'),',') -- 1
select concat('5,4', ',') regexp concat(replace('1,2,3',',',',|'),',') -- 0

前面的存在返回1,不存在返回0;需要注意的是,这个方法如果存在前面的集合元素包含后面的集合元素时候,也会返回1,所以可以在前后加上不可能出现的字符来判断。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

xfx98

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值