首页 > 解决方案 > MySQL 使用多行的 REGEXP

问题描述

我有一个包含两个表的数据库。第一个表有一列包含正则表达式(大约有 200 行)。第二个表有多行,我想从第二个表中获取与第一个表中的所有正则表达式匹配的所有行。

例如,如果第一个表有:

^google.com/orp
^amazon.com/ssw
^stack/ik9

第二张桌子有

stack/ik9282
msifks0
amazon.com/ssw9a

结果应该是

stack/ik9282
amazon.com/ssw9a

我尝试使用GROUP_CONCAT并从我的第一个表中获取正则表达式 as ^google.com/orp|^amazon.com/ssw|^stack/ik9,但GROUP_CONCAT最大长度为 1024,我需要更多。

标签: mysqlsqlregex

解决方案


SELECT DISTINCT strings.value
FROM strings
JOIN patterns ON strings.value REGEXP patterns.pattern;

小提琴


GROUP_CONCAT最大长度为 1024

您可以调整group_concat_max_len变量设置。


推荐阅读