6

我有一个查询,我希望通过一个包含“IN”子句的 ASP.NET TableAdapter 来运行,该子句通过参数接收它的值。

我的问题是,如何指定这个参数?我想写这样的条件语句:

AND b.group_category_id in (@ParamList)

其中@ParamList 是参数的字符串,例如“4,12,45,23”,但由于指定的 id 是整数,它抱怨它不能将字符串转换为整数。这是有道理的,但是有没有办法在 ASP.NET TableAdapter 的 SQL 语句中指定这样的列表?

4

4 回答 4

1

您可能会查看http://dotnet.org.za/johanvw/archive/2008/06/13/mssql-split-function.aspx并将其作为字符串传递。一种解决方法而不是解决方案。但这只有在您使用 MSSQL 时才可用。

于 2009-03-16T10:26:46.603 回答
1

我见过的一种解决方法:

WHERE charindex(',' + cast(b.group_category_id as varchar) + ',', @ParamList) > 0

在这种情况下,@ParamList 将是格式为“,4,12,45,23”的字符串

它不是“漂亮”,但保留了编译查询的参数和好处。由于您正在搜索数字,因此子字符串保证了唯一匹配。

于 2009-03-17T21:04:24.027 回答
0

您可以将@ParamList 作为逗号分隔的字符串传递,解析字符串并将结果插入#table,然后使用 IN 搜索#table:

AND b.group_category_id in (select group_category_id from #group_category_id_list)

除此之外,您的选择是有限的,除非您想使用动态 SQL(exec() 语句),但我建议您尽可能避免这种情况。

于 2009-03-16T10:35:05.350 回答
0

用以下方式回答我自己的问题:无法完成。

于 2012-10-25T10:21:14.313 回答