MYSQL匹配部分字符串

时间:2011-10-28 11:50:26

标签: mysql

我有两张桌子需要匹配。请参阅示例。

TB1

ID | String1 
1  | Apt 2
2  | Apt 23
3  | Apt 22

TB2

ID2| String2
1  | 23 Apartment
2  | 22 The Block
3  | 2 Complex

我需要找到从TB1到TB2的哪个ID匹配WHERE字符串1到string2的数字部分匹配

输出

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

2 个答案:

答案 0 :(得分:0)

恕我直言,这是糟糕的桌面设计。如果您必须进行此类匹配,请将该号码存储在单独的字段中。

答案 1 :(得分:0)

如果你真的无法更改表格式,那么我会创建一个函数来从给定的字符串中去除所有非数字字符,然后在查询中使用它。

幸运的是,这是一项has been tackled before(希望你的意大利人能够从头开始)的任务。

然后,您可以在查询中使用该功能。

因此:

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填充,在这种情况下你可能没有太多的控制权!