2017-10-19 94 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