2015-10-16 128 views
1

我尝试执行以下operation.But它给误差存储在临时表中的数据返回多个值错误“子查询返回大于1倍的值。”子查询而使用分割功能

declare @filter varchar(100)='Moving,Idle,Stopped,Working' 
declare @filter2 varchar(100)='Init,suspend,Complete'  

create table #SPLITITEMS(value varchar(100),value1 varchar(100)) 
insert into #SPLITITEMS (value,value1)values((select val from dbo.split(@filter,',')),(select val from dbo.split(@filter2,','))) 

,这样我可以有更好的表现进行

select * from table1 where column1 in (select value from #SPLITITEMS) 
select * from table2 where column1 in (select value1 from #SPLITITEMS) 

我该如何实现这个任务?他们可以尝试的其他选择吗?有任何想法吗?有什么建议么?

请帮忙。 在此先感谢。

回答

0

这可能帮助:

declare @Q1 nvarchar(max) 
declare @filter varchar(100)='Moving,Idle,Stopped,Working' 
declare @filter2 varchar(100)='Init,suspend,Complete'  

Set @filter = '''' + replace(@filter, ',', ''',''') + '''' 
Set @filter2 = '''' + replace(@filter2, ',', ''',''') + '''' 

Set @Q1 = 'select * from table1 where column1 in (' + @filter + ')' 

Exec (@Q1) 
+0

感谢的建议,但因为上面给出的查询是一个大的存储过程的一小部分,我不能使用它。 – Pwavel002

+0

我们给你小解决方案,因为你给小部分....以及'大'是你的商店过程? – Viandry

+0

要求是插入列值在临时表中的形式的过滤器值,这样我可以在像子句中使用它SELECT * FROM表1其中(从#SPLITITEMS选择值).Insert查询列工作,如果临时表只有一列。但对于多列它给出了错误。我不能在这里使用动态查询。 – Pwavel002