mysql 判断两个字符串是否存在交集

mysql-判断两个字符串是否存在交集

  • 函数的方式(这个暂时不介绍)
  • sql的方式(正则)

select concat(str1, ',') regexp concat(replace(str2,',',',|'),',');

这个表达式,匹配时看似可以满足需求,实际会存在短匹配情况。

比如对“3333,44”这样的字符串进行匹配,如果想要匹配"3333"或者"44"或者"3333,44"这三种字符串,可以使用|限定符(表示或者的意思),同时加以逗号进行精准匹配,似乎以满足需求,其实不然,还差一步。此时匹配的长度可能不是最长的,而最长匹配才是正确匹配,也就是说,实际还有可能会匹配上"33"或"33,"甚至"33,4"等字符串。

整了好久,也没找到解决方案。好在最后,灵感突发,实现了。

其实最长匹配的实现思路就是限定其长度然后匹配,所以只要在将可能匹配的数字包裹在逗号之间即可,也就是说完全匹配时可以通过",3333,"的形式去匹配。

SELECT  concat(',','3333,2222', ',')
select concat(',','3333,2222', ',') regexp concat(',',replace('33,22',',',',|,'),',')  -- ,33,或者,22,

ps:返回值为1表示匹配,为0表示不匹配。

正则表达式-匹配查询-示例

select *
from mcp 
where concat(',',mcp.place_code, ',') regexp concat(',',replace('3333,2222',',',',|,'),',')

list快速转string

list.stream().collect(Collectors.joining(","))

好了!至此完结!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值