因此,我试图实现的目的是连接两个表,要连接的列需要一个正则表达式来将两个表匹配在一起。我曾经有一个使用LIKE(%)的解决方案有效,但是现在我想尝试通过仅与regexp匹配来使查询更快。

table1
|   col1     |    col2    |
|   blablaaa |12323_string|

table2
|   col2     |    col2    |
|   blabla   |   string   |


所以col2上的字符串是我想要加入它们的地方,但是我需要在下划线后匹配字符串...

这是我离得最近的地方,但我可能仍然遥遥无期

SELECT *
FROM table1 AS t1 JOIN table2 AS t2
ON t1.col2 REGEXP CONCAT('(?<=_)[^_] + t2.col2')


我不知道那里是否有一个热情的人可以帮助我。

最佳答案

只需使用substring_index()

SELECT *
FROM table1 t1 JOIN
     table2 t2
     ON t2.col2 = substring_index(t1.col2, '_', -1);


也许like

SELECT *
FROM table1 t1 JOIN
     table2 t2
     ON t1.col2 LIKE CONCAT('%\_', t2.col2);

关于mysql - 在正则表达式上加入MySQL表(下划线后),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30508414/

10-13 22:17