0

我有两个包含邮政编码详细信息的表,第一个本质上是一个高级表,它只有邮政编码的第一部分(例如 PR2、LL4)等等。第二个表是街道邮政编码表,因此它包含完整的邮政编码(PR22JY、LL35GN)。

我想做一个加入,以便他们加入街景邮政编码上的邮政编码。在过去,我使用 aCHARINDEX返回第一部分,但街道表是作为没有空格的单个字符串,我不能仅根据前 3 个字符进行匹配,因为有些邮政编码有 3,有些有 4。

有没有人有什么建议?

4

2 回答 2

0

我只会使用代理键 - 不要依赖实际的邮政编码作为参考,使用系统给定的单独ID值。

我会设计这样的表格:

在此处输入图像描述

该表通过列PostcodeDetail引用该表(这对两个表都是通用的 - 它是高级表中的主键,详细表中的外键)。PostcodeHighlevelPostCodeID

当然:您可以根据需要轻松地向这些表中添加更多列(例如,城市/地区的名称 - 无论您需要什么)。

我的意思是:不要依赖实际的邮政编码来连接两个表——使用代理列来处理这个问题。这样,您不需要执行任何SUBSTRINGCHARINDEX操作来加入两个表 - 这些操作也会破坏您的 JOIN 性能......

于 2013-10-23T08:27:03.730 回答
0

试试这个:

select * from postcode pc inner join postcodedetails pcd on pcd.postcode like pc.postcode'%'
于 2013-10-23T08:32:37.470 回答