2017-10-19 90 views
0

我想弄清楚如何在Sql Server中创建一个包含值的数组的var变量,但是在Stack中搜索到的却没有任何一致的......这就是我想象中的可能是这样的:SQL Server 2008中的数组变量

declare @partners as nvarchar(max) = ('partner1','partner2'); 

select * from partners 
where partner in (@partners); 

在SQL Server中可以吗?怎么样?

谢谢!

回答

3

你可以用表

declare @partnersList as table(partnerName varchar(100)) 
insert into @partnersList values('partner1'),('partner2') 

SELECT * 
FROM partners 
WHERE 'partner' in (SELECT partnerName FROM @partnersList) 
+0

令人失望的是SQL Server不支持这种逻辑,但是这个解决方案很实用,解决了我的问题,谢谢! – jvbarsou

2

做到这一点你不能这样做,但你可以使用表变量来获得相同的行为:

declare @partners TABLE (
    Name nvarchar(max) 
) 

INSERT @partners 
VALUES 
    ('partner1'), 
    ('partner2') 

select * from partners 
where partner in (
    SELECT Name 
    FROM @partners 
) 
2

或者你可以执行它动态:

declare @partners as nvarchar(max) = ' ''partner1'',''partner2'' ' 


declare @sql nvarchar(Max) 

Set @sql='SELECT * FROM partners WHERE [partner] IN ('+ @partners +')' 

exec sp_executesql @sql