SQL IN演算子を使用して一致するIDのリストを検索して返すために、ストアドプロシージャを使用する際にいくつかの問題が発生しています。私が思う問題はデータ型に関連しています。
パラメータは文字列'32,1,5,78,43'としてストアドプロシージャに渡されます-これは、フィールドColumn1を検索するためにIN演算子としてクエリに渡される必要があります。Bigintのこのフィールドのデータ型。
DECLARE @TEST varchar(1000)
SET @TEST = REPLACE('32,1,5,78,43', '''','')
SELECT Column1, Column2
FROM Table
WHERE Column1 IN(@TEST)
文字列から引用符を削除しようとしても機能しないようで、「データ型varcharからbigintへの変換中にエラーが発生しました」というエラーが返されます。
ストアドプロシージャなしでコードを実行し、値を直接IN演算子(引用符なし)に入れると、正しく機能し、正しい値が返されます。例えば
SELECT Column1, Column2
FROM Table
WHERE Column1 IN(32,1,5,78,43)
私がここでどこが間違っているのか誰かにアドバイスしてもらえますか?