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
检查以下链接以创建拆分字符串函数
- http://sqlperformance.com/2012/07/t-sql-queries/split-strings
- http://www.sqlservercentral.com/articles/Tally+Table/72993/
或of-course你可以使用dynamic sql
我需要将服务器端参数传递给我的 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
检查以下链接以创建拆分字符串函数
- http://sqlperformance.com/2012/07/t-sql-queries/split-strings
- http://www.sqlservercentral.com/articles/Tally+Table/72993/
或of-course你可以使用dynamic sql