我有两张桌子需要匹配。请参阅示例。
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
答案 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填充,在这种情况下你可能没有太多的控制权!