MYSQL匹配字符串的一部分

MYSQL匹配字符串的一部分,mysql,Mysql,我有两张桌子需要搭配。请参见示例 TB1 TB2 我需要找到从TB1到TB2哪个ID匹配,其中字符串1到字符串2的数字部分匹配 输出 ID | Matching ID2 | String1 | String 2 1 | 3 | Apt 2 | 2 Complex 2 | 1 | Apt 23 | 23 Apartment 3 | 2 | Apt 22 | 22 Apartment 我觉得这是个糟糕的桌子设计

我有两张桌子需要搭配。请参见示例

TB1

TB2

我需要找到从TB1到TB2哪个ID匹配,其中字符串1到字符串2的数字部分匹配

输出

 ID | Matching ID2 | String1 | String 2
 1  | 3            | Apt 2   | 2 Complex
 2  | 1            | Apt 23  | 23 Apartment
 3  | 2            | Apt 22  | 22 Apartment

我觉得这是个糟糕的桌子设计。如果必须进行此类匹配,请将数字存储在单独的字段中。

如果确实无法更改表格式,则我将创建一个函数,从给定字符串中删除所有非数字字符,然后在查询中使用它

幸运的是,这是一项希望你的意大利语达到标准的任务

然后可以在查询中使用该函数

因此:

select a.ID, b.ID as "Matching ID2",a.String1,b.String2    
from TB1 as a INNER JOIN TB2 as b    
ON LeaveNumber(a.String1) = LeaveNumber(b.String2)
ORDER BY a.ID asc;
不是傻瓜式的,也可能不是最快的,但它应该能让你得到你想要的


但是如果你有机会,我会认真考虑改变这个表格设计。虽然听起来好像是CSV引擎表或直接从CSV填充,在这种情况下,您可能没有太多的控制权

不清楚-你能解释一下你想根据什么值匹配什么吗?我很清楚。他想匹配字符串1上的数字。对不起,是的,这是正确的。我想将字符串1的数字部分转换为字符串2。我会的,但这就是表格的方式,我需要运行一些匹配。不可能进行更改表格?我可以将其转换为csv,并可以进行更改表格,但是,数据差异太大,我不知道如何进行更改。例如:String1包括Apt 1、公寓1、1/街区。常见的是它包含一个数字我不明白你最后的评论。这也是TB1和TB2之间的外键关系。。。
 ID | Matching ID2 | String1 | String 2
 1  | 3            | Apt 2   | 2 Complex
 2  | 1            | Apt 23  | 23 Apartment
 3  | 2            | Apt 22  | 22 Apartment
select a.ID, b.ID as "Matching ID2",a.String1,b.String2    
from TB1 as a INNER JOIN TB2 as b    
ON LeaveNumber(a.String1) = LeaveNumber(b.String2)
ORDER BY a.ID asc;