开发过程中,会遇到这样的情况:判断两个以","号分割或者"-"分割的字符串是否含有交集,那么就可以使用MySQL正则匹配的方式进行判断,举例如下:
表数据如下:
id | join_person | join_time |
1 | 张三 | 2019-09-23 22:07:55 |
2 | 张三丰,李四 | 2019-09-23 22:07:55 |
3 | 李四,王五 | 2019-09-23 22:07:55 |
我们要判断join_person列数据与'王五,赵六'有交集的数据,那么就可以使用REGEXP进行正则匹配判断,SQL语句如下:
select * from test1 where join_person REGEXP REPLACE('王五,赵六',',','|');
结果如下:
id | join_person | join_time |
3 | 李四,王五 | 2019-09-23 22:07:55 |
我们要判断join_person列数据与'张三,王二'有交集的数据,那么就可以使用REGEXP进行正则匹配判断,SQL语句如下:
select * from test1 where join_person REGEXP REPLACE('张三,王二',',','|');
结果如下:
id | join_person | join_time |
1 | 张三 | 2019-09-23 22:07:55 |
2 | 张三丰,李四 | 2019-09-23 22:07:55 |
哎,怎么张三丰也匹配出来了呢?这个时候,我们只需要稍改一下SQL就可以解决了,SQL语句如下:
select * from test1 where CONCAT(',',join_person,',') REGEXP CONCAT(',(',REPLACE('张三,王二',',','|'),'),');
结果如下:
id | join_person | join_time |
1 | 张三 | 2019-09-23 22:07:55 |
这么实用的正则匹配,赶快实践起来吧!