-1

重複の可能性:
SQL IN 句をパラメータ化しますか?
intのリストで等値コンパレータを取得するSQL方法

次のような C# の文字列があります。

string listOfNumbers = "12,56,90,101"; //of course, this string could be different

および C# コード

sqlCommand.Parameters.Add("@numbers", listOfNumbers);
SqlDataReader dataReader = sqlCommand.ExecuteReader();

しかし、sqlCommand はストアド プロシージャにバインドされており、内部は次のような SQL ステートメントです。

SELECT * FROM TABLE1 WHERE COLUMN1 IN(@numbers)

@numbersNVARCHAR(30)データ型です。

しかし、ブレークポイントがSqlDataReader dataReader = sqlCommand.ExecuteReader();行にある場合、VS2010 は例外をスローしますIncorrect syntax near my_stored_procedure

IN 演算子の整数でコンマで区切られた数字を含む文字列を「変換」する方法は?

おそらく、エラーはSELECT * FROM TABLE1 WHERE IN("12,56,90,101")varchar から integer に変換できなかったことが原因で発生するはずです。

4

1 に答える 1

0

C# コード:

string listOfNumbers = "12|56|90|101";

SQL クエリ:

SELECT  *
FROM    TABLE1
WHERE   '|' + @numbers + '|' LIKE '%|' + CAST(COLUMN1 AS varchar) + '|%'
于 2012-04-19T13:17:41.573 に答える