邮政编码范围查找

aro*_*ron 0 sql-server

(我使用 sql server 2015)在我的订单表中,邮政编码是varchar.

我想做这样的搜索:

SELECT distinct email
  FROM [dbo].[tb_Order] 
  where postalCode in (20004,20528,20260,20529,22060,22181,20708)
Run Code Online (Sandbox Code Playgroud)

(有更多邮政编码)

我不想将代码列表转换为("20004","20528","20708").

处理这个问题的最佳方法是什么?

Sco*_*red 5

如果您实际上使用的是 Sql Server 2016,您可能可以使用新的 STRING_SPLIT 命令来创建一个“表”来连接。只需将逗号分隔的整数放在 STRING_SPLIT 命令中。这是一个例子。

declare @tb_Order table (col1 int, postalcode varchar(5))
insert into @tb_Order values(1,'11111')
insert into @tb_Order values(2,'22222')
insert into @tb_Order values(3,'33333')
insert into @tb_Order values(4,'44444')
insert into @tb_Order values(5,'55555')
---------------------------------------
SELECT a.*
FROM @tb_Order a
JOIN STRING_SPLIT('11111,22222,33333,44444,55555',',')   
    ON convert(varchar(5),value) = a.postalcode;  
Run Code Online (Sandbox Code Playgroud)