SQL Server 2008中的数组变量
问题描述:
我想弄清楚如何在Sql Server中创建一个包含值的数组的var变量,但是在Stack中搜索到的却没有任何一致的......这就是我想象中的可能是这样的:SQL Server 2008中的数组变量
declare @partners as nvarchar(max) = ('partner1','partner2');
select * from partners
where partner in (@partners);
在SQL Server中可以吗?怎么样?
谢谢!
答
你可以用表
declare @partnersList as table(partnerName varchar(100))
insert into @partnersList values('partner1'),('partner2')
SELECT *
FROM partners
WHERE 'partner' in (SELECT partnerName FROM @partnersList)
答
做到这一点你不能这样做,但你可以使用表变量来获得相同的行为:
declare @partners TABLE (
Name nvarchar(max)
)
INSERT @partners
VALUES
('partner1'),
('partner2')
select * from partners
where partner in (
SELECT Name
FROM @partners
)
答
或者你可以执行它动态:
declare @partners as nvarchar(max) = ' ''partner1'',''partner2'' '
declare @sql nvarchar(Max)
Set @sql='SELECT * FROM partners WHERE [partner] IN ('+ @partners +')'
exec sp_executesql @sql
令人失望的是SQL Server不支持这种逻辑,但是这个解决方案很实用,解决了我的问题,谢谢! – jvbarsou