MySQL数据库查询中的模式匹配

时间:2014-07-22 10:03:21

标签: mysql regex

我在两个不同的表idtable1中有一个名为table2的列,它始终包含30个字符。我想从table1table2中进行选择,其中两个表中id列的第6到第30个字符是相同的。两个表中的id列都是unique

3 个答案:

答案 0 :(得分:2)

select * 
from table1
join table2 on substring(table1.id, 6) = substring(table2.id, 6)

答案 1 :(得分:2)

你可以在没有正则表达式的情况下做到这一点,我喜欢这个正确的函数(返回n个最右边的字符):

SELECT *
  FROM table1 t1
  JOIN table2 t2
    ON RIGHT(t1.id,25) = RIGHT(t2.id,25)

实际上,在第二个想法中,SUBSTRING方式在这种情况下可能更好,以防万一行以较短的ID结束。

答案 2 :(得分:0)

试试这个

SELECT *
FROM table1
JOIN table2 ON SUBSTRING(table1.id,7) = SUBSTRING(table2.id,7);