asp.net Оператор выбора SqlDataSource с предложением IN (...)

Мне нужно передать параметр на стороне сервера в мое предложение SELECT IN SqlDataSource следующим образом (обратите внимание на параметр @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

Но это не проходит проверку в операции Test-Query. Параметр @InClause получает свое значение из элемента управления HiddenField. Я хочу установить это значение на основе некоторых условий. например, если DIVISION=5, тогда @InClause будет ="45,46", остальное ="14,15". Любые предложения о том, как передать значения IN ( ...) с помощью скрытого поля. Значение (которое, конечно, является строкой). Благодарю.

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/

или, конечно, вы можете использовать dynamic sql

Другие вопросы по тегам