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

asp.net SqlDataSource select statement with IN (...) clause

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

SELECT UID_REPORT, TXT_RPT_TEXT, TXT_RPT_NAME, TXT_RPT_ASPX_PAGE, TXT_RPT_TYPE 
FROM REPORTS WHERE (UID_REPORT IN (@InClause)) 
ORDER BY INT_SORT_ORDER

但这并没有通过测试查询操作中的验证。 '@InClause' 参数从 HiddenField 控件获取它的值。 我想根据某些条件设置此值。例如,如果 DIVISION=5,那么@InClause 将是 ="45,46" Else ="14,15"。 关于如何通过 hiddenfield.Value (当然是字符串)传递 IN ( ... ) 值的任何建议。 谢谢

您需要 split string 函数来执行此操作

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 

检查以下链接以创建拆分字符串函数

  1. http://sqlperformance.com/2012/07/t-sql-queries/split-strings
  2. http://www.sqlservercentral.com/articles/Tally+Table/72993/

或of-course你可以使用dynamic sql