Rejoindre la colonne dans la clause where en utilisant split

Ma procédure stockée accepte un paramètre avec des valeurs comme

Declare @Temp VarChar(Max) Set @Temp = 'S1CW3733|1050105000224,S1CW4923|1050105000009' 

Où les valeurs sont comme

 Column1|Column2,Column1|Column2,Column1|Column2, 

Je veux appliquer même dans la requête SQL comme

 Select * From ATMStatus Where ATM + '|' + Fault IN (@Temp) 

Comment puis-je atteindre cet objective?

La database est SQL Server 2008

Pour les petites tables, vous pouvez utiliser la solution de numérisation de table, en supposant que ATM et Fault ne contiennent jamais de virgule ( , ) ou de pipe ( | ):

 Select * From ATMStatus Where ',' + @Temp + ',' LIKE '%,' + ATM + '|' + Fault + ',%'; 

Pour les grandes tables, vous devez utiliser une fonction de fractionnement pour transformer la variable en une table à deux rangées et à deux colonnes, qui sera utilisée comme:

 Select a.* From ATMStatus a join dbo.SplitVarTo2ColumnTable(@Temp) b on b.Column1 = a.ATM and b.Column2 = a.Fault;