Select 提取基于国外和国内的邮政编码

Select to pull Zip code based both foreign and domestic

我需要编写一个 T-SQL 程序,其中参数是邮政编码。我们声明了以下参数。

declare @postal_code varchar(10)

table中的示例数据:

postal_codes
NULL
46383
074523632
B4H34
113601419
ZH/8600
A1G 9Z9
WN73R
Wd3 3he
89136

等我们有多种地址,有些地址没有某些外国的邮政编码,有些则有标准的 5 位或 10 位美国邮政编码。

我需要以某种方式对查询进行编码:

select * 
from table_name 
where postal_code = @postal_code

我的初始代码是这样的:

select *   
from table_name 
where (@postal_code is null or 
       left(ad.postal_code, 5) = @postal_code)

但这对除 5 位以外的任何其他内容都不起作用,然后我尝试使用 10 位,但 5 位不匹配。我需要去除空格或其他字符吗?我尝试搜索并找到了多种解决方案,但我需要适用于国内外各种邮政编码的解决方案。

根据您最后的评论,您似乎需要一个“开头为”查询。试试这个

SELECT * 
FROM table_name 
WHERE REPLACE(postal_code, ' ', '') LIKE REPLACE(@postal_code, ' ', '') + '%';