我有两个包含邮政编码详细信息的表,第一个本质上是一个高级表,它只有邮政编码的第一部分(例如 PR2、LL4)等等。第二个表是街道邮政编码表,因此它包含完整的邮政编码(PR22JY、LL35GN)。
我想做一个加入,以便他们加入街景邮政编码上的邮政编码。在过去,我使用 aCHARINDEX
返回第一部分,但街道表是作为没有空格的单个字符串,我不能仅根据前 3 个字符进行匹配,因为有些邮政编码有 3,有些有 4。
有没有人有什么建议?
我有两个包含邮政编码详细信息的表,第一个本质上是一个高级表,它只有邮政编码的第一部分(例如 PR2、LL4)等等。第二个表是街道邮政编码表,因此它包含完整的邮政编码(PR22JY、LL35GN)。
我想做一个加入,以便他们加入街景邮政编码上的邮政编码。在过去,我使用 aCHARINDEX
返回第一部分,但街道表是作为没有空格的单个字符串,我不能仅根据前 3 个字符进行匹配,因为有些邮政编码有 3,有些有 4。
有没有人有什么建议?
我只会使用代理键 - 不要依赖实际的邮政编码作为参考,使用系统给定的单独ID
值。
我会设计这样的表格:
该表通过列PostcodeDetail
引用该表(这对两个表都是通用的 - 它是高级表中的主键,详细表中的外键)。PostcodeHighlevel
PostCodeID
当然:您可以根据需要轻松地向这些表中添加更多列(例如,城市/地区的名称 - 无论您需要什么)。
我的意思是:不要依赖实际的邮政编码来连接两个表——使用代理列来处理这个问题。这样,您不需要执行任何SUBSTRING
或CHARINDEX
操作来加入两个表 - 这些操作也会破坏您的 JOIN 性能......
试试这个:
select * from postcode pc inner join postcodedetails pcd on pcd.postcode like pc.postcode'%'