带有IN(...)子句

时间:2016-01-05 18:02:05

标签: asp.net sql-server sqldatasource

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

但是这不会在Test-Query操作中通过验证。 ' @ InClause'参数从HiddenField控件获取它的值。 我想根据一些条件设置这个值。例如,如果DIVISION = 5那么@InClause将=" 45,46"否则=" 14,15"。 有关如何通过hiddenfield.Value(当然是一个字符串)传递IN(...)值的任何建议。 感谢。

1 个答案:

答案 0 :(得分:1)

您需要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/
  3. 当然,您可以使用dynamic sql