Sql server SQL Server验证邮政编码

Sql server SQL Server验证邮政编码,sql-server,postal-code,Sql Server,Postal Code,我有一个包含邮政编码的表,但条目表单中没有内置验证,因此它们在数据库中的存储方式不一致,示例如下: ID Postcode 001742 B5 001745 001746 001748 DY3 001750 001751 001768 B276LL 001774 B339HY 001776 B339QY 001780 WR51DD 我想使用这些邮政编码来映射到中心点的距离,但在此之前,我需要将它们转换为有效格式,并过滤掉任何空白或不完整的邮政编码 我曾考虑

我有一个包含邮政编码的表,但条目表单中没有内置验证,因此它们在数据库中的存储方式不一致,示例如下:

ID      Postcode
001742  B5
001745  
001746  
001748  DY3
001750  
001751  
001768  B276LL
001774  B339HY
001776  B339QY
001780  WR51DD
我想使用这些邮政编码来映射到中心点的距离,但在此之前,我需要将它们转换为有效格式,并过滤掉任何空白或不完整的邮政编码

我曾考虑过使用

left(postcode,3) + ' ' + right(postcode,3)
以更正格式,但这不适用于“M6 8HD”这样的邮政编码


我的目标是得到有效格式的邮政编码列表,但我不知道如何解释不同长度的邮政编码。在SQL Server中有这样做的方法吗?

如评论中所述,有时从另一个角度看问题会提供一个简单得多的解决方案

您有一个由用户提供的任意输入列表,其中通常不包含正确的间距。您还有一个正确间隔的有效邮政编码列表

您试图解决的问题是找到正确的位置,在任意输入中插入空格,使其与有效代码列表匹配,这在实践中非常困难

然而,执行相反的任务——从有效邮政编码中删除空格——非常容易。所以这就是我建议做的


在我们最近一轮的数据建模中,我们使用两个邮政编码列对地址进行建模—
邮政编码
,其中包含从任何来源提供的邮政编码,以及
邮政编码空间
,一个从
邮政编码
中去除空白字符的计算列。我们使用后一列进行搜索,例如基于用户输入的搜索。如果要永久保留有效邮政编码列表,您可能需要对其执行类似的操作,以便执行简单的匹配/查找,然后将这些匹配转换回具有空格的版本,这实际上是对原始问题的解决方案

替换(邮政编码,,”)
以去除空格,然后检查长度等。也分享一下什么是正确的邮政编码格式这些是英国的邮政编码吗?我不确定尝试在数据库中验证它们是否是一个好主意。难道你不能获取一个有效邮政编码的数据库/csv,你可以加入并验证它吗?例如,我想我们有一个有效的邮政编码列表,我可以用来检查它们,但我需要先重新格式化我的列表,不是吗?e、 g.我的列表上写着“M68HD”,它与“M6 8HD”的有效代码不匹配,是吗?@GullitsMullet-你认为在任意代码中插入空格或从官方列表中删除空格,然后进行比较更容易找到正确的位置吗?我按照你的建议,使用有效的邮政编码列表过滤用户输入的数据,谢谢你的帮助