2017-10-19 3 views
0

J'essaie de comprendre comment créer une var dans Sql Server qui contient un tableau de valeurs, recherché ici dans Stack mais rien de cohérent ... c'est comme ça que j'ai imaginé que ça pourrait être comme :Array var dans SQL Server 2008

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

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

Est-il possible dans SQL Server? Comment?

Merci!

Répondre

3

Vous pouvez le faire avec table

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

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

Déçu que SQL Server ne supporte pas ce genre de logique, mais cette solution est utile et a résolu mon problème, merci! – jvbarsou

2

Vous ne pouvez pas le faire, mais vous pouvez utiliser une variable de table pour obtenir le même comportement:

declare @partners TABLE (
    Name nvarchar(max) 
) 

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

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

Ou vous pouvez l'exécuter comme dynamique:

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


declare @sql nvarchar(Max) 

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

exec sp_executesql @sql