可能重复:
Parameterizing an SQL IN clause?
SQL how to get an equality comparator on a list of ints
我在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)
@numbers
是NVARCHAR(30)
数据类型。
但是当断点位于SqlDataReader dataReader = sqlCommand.ExecuteReader();
行时,VS2010会抛出异常Incorrect syntax near my_stored_procedure
。
如何“转换”包含以逗号分隔的数字的字符串为IN运算符的整数?
可能,错误是由SELECT * FROM TABLE1 WHERE IN("12,56,90,101")
引起的,错误应该是无法从varchar转换为整数。
答案 0 :(得分:0)
C#代码:
string listOfNumbers = "12|56|90|101";
SQL查询:
SELECT *
FROM TABLE1
WHERE '|' + @numbers + '|' LIKE '%|' + CAST(COLUMN1 AS varchar) + '|%'