当接收由逗号分隔的整数列表时,如何为IN sql运算符生成整数

时间:2012-04-19 12:50:21

标签: sql sql-server sql-server-2005

  

可能重复:
  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)

@numbersNVARCHAR(30)数据类型。

但是当断点位于SqlDataReader dataReader = sqlCommand.ExecuteReader();行时,VS2010会抛出异常Incorrect syntax near my_stored_procedure

如何“转换”包含以逗号分隔的数字的字符串为IN运算符的整数?

可能,错误是由SELECT * FROM TABLE1 WHERE IN("12,56,90,101")引起的,错误应该是无法从varchar转换为整数。

1 个答案:

答案 0 :(得分:0)

C#代码:

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

SQL查询:

SELECT  *
FROM    TABLE1
WHERE   '|' + @numbers + '|' LIKE '%|' + CAST(COLUMN1 AS varchar) + '|%'