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
Проверьте ссылки ниже, чтобы создать функцию разделения строк
- http://sqlperformance.com/2012/07/t-sql-queries/split-strings
- http://www.sqlservercentral.com/articles/Tally+Table/72993/
или, конечно, вы можете использовать dynamic sql