-1

可能重复:
参数化 SQL IN 子句?
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 转换为整数。

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 回答