带有IN(…)子句的asp.net SqlDataSource select语句

带有IN(…)子句的asp.net SqlDataSource select语句,asp.net,sql-server,sqldatasource,Asp.net,Sql Server,Sqldatasource,我需要将一个服务器端参数传递给我的SqlDataSource SELECT IN子句,如下所示(注意参数@incluse及其在aspx中定义的SQL SELECT中的位置(对于SqlDataSource): 但这不会通过测试查询操作中的验证。 “@incluse”参数从HiddenField控件获取其值。 我想根据一些条件设置此值。例如,如果除法=5,则@incluse将=“45,46”Else=“14,15”。 关于如何通过hiddenfield.Value(当然是字符串)传递IN(…)值的任

我需要将一个服务器端参数传递给我的SqlDataSource SELECT IN子句,如下所示(注意参数@incluse及其在aspx中定义的SQL SELECT中的位置(对于SqlDataSource):

但这不会通过测试查询操作中的验证。 “@incluse”参数从HiddenField控件获取其值。 我想根据一些条件设置此值。例如,如果除法=5,则@incluse将=“45,46”Else=“14,15”。 关于如何通过hiddenfield.Value(当然是字符串)传递IN(…)值的任何建议。
谢谢。

您需要
拆分字符串
函数来执行此操作

SELECT uid_report, 
       txt_rpt_text, 
       txt_rpt_name, 
       txt_rpt_aspx_page, 
       txt_rpt_type 
FROM   reports 
WHERE  uid_report IN (SELECT split_value 
                      FROM   Udf_splitstring(@InClause, ',')) 
ORDER  BY int_sort_order 
检查以下链接以创建拆分字符串函数


  • 当然,您也可以使用
    动态sql

    您发布的代码是在ASPX页面选择命令中工作还是在sql Server脚本窗口中工作?我发布的选择代码位于ASPX代码中的SqlDataControl中。我没有任何要验证的内容。我在ASPX代码中的SqlDataSource选择命令中使用了您发布的sql代码,并且工作完美。我的dbo中有一个splitString函数,但我不知道我可以将其嵌入到aspx页面中。我在存储过程中多次使用它。谢谢。再次问这个问题?我在Stack Overflow中搜索类似的问题/答案,而不是询问internet。我将@VR46标记为答案,尽管您的链接隐藏了存储过程上下文下的六种不同方法的解决方案。谢谢。
    SELECT uid_report, 
           txt_rpt_text, 
           txt_rpt_name, 
           txt_rpt_aspx_page, 
           txt_rpt_type 
    FROM   reports 
    WHERE  uid_report IN (SELECT split_value 
                          FROM   Udf_splitstring(@InClause, ',')) 
    ORDER  BY int_sort_order