我的存储过程接受一个值为
的参数Declare @Temp VarChar(Max)
Set @Temp = 'S1CW3733|1050105000224,S1CW4923|1050105000009'
值在哪里
Column1|Column2,Column1|Column2,Column1|Column2,
我想在SQL查询中应用相同的内容,如
Select *
From ATMStatus
Where ATM + '|' + Fault IN (@Temp)
我怎样才能做到这一点?
数据库是SQL Server 2008
答案 0 :(得分:2)
对于小型表,您可以使用表扫描解决方案,假设ATM和Fault永远不能包含逗号(,
)或管道(|
):
Select *
From ATMStatus
Where ',' + @Temp + ',' LIKE '%,' + ATM + '|' + Fault + ',%';
对于大型表,您需要使用拆分函数将变量转换为多行的2列表,然后使用类似的表:
Select a.*
From ATMStatus a
join dbo.SplitVarTo2ColumnTable(@Temp) b
on b.Column1 = a.ATM and b.Column2 = a.Fault;