存储一组smallint值,用于' in'声明

时间:2018-04-11 10:48:28

标签: sql sql-server-2005

我想为变量分配一些数字,以便我可以在IN语句中使用它,如下所示:

declare @var smallint
set @var = 2,3,49,53,34
select something from somewhere WHERE number in @var

但是,此类查询会导致语法错误。我尝试使用一些不同的数据类型(varchar等),但它也不喜欢它,而是给了我数据类型转换错误。

我可以创建一个类似的数组吗?我希望使用IN的列是smallint类型,我使用SQL 2005,如果有帮助的话。

1 个答案:

答案 0 :(得分:0)

对于SQL 2008或更高版本:

declare @variables table (number smallint)

insert into @variables
values (0),
(1),
(2)

select something from somewhere where number in (select number from @variables)

对于SQL 2005:

declare @variables table (number smallint) 
insert into @variables (number) 
SELECT 2 
UNION ALL 
SELECT 3 
UNION ALL 
SELECT 49 
UNION ALL 
SELECT 53 
UNION ALL 
SELECT 34 

select * from @variables