【发布时间】:2010-05-23 19:34:56
【问题描述】:
我正在创建一个字符串,该字符串是一个逗号分隔值的列表,方法是遍历 CheckBoxList 中的选择。我能够显示这个值,所以我知道它正在创造我所期望的。我正在尝试将此列表传递给 SELECT 查询中的 IN 语句:
SelectCommand="SELECT ThisDate, DATEPART(dw, ThisDate) AS Expr1 FROM fbCalendar WHERE (ThisDate >= @ThisDate) AND (ThisDate <= @ThisDate2) AND (DATEPART(dw, ThisDate) IN (@TheseDays))"
<asp:ControlParameter ControlID="Label1" Name="TheseDays" PropertyName="Text" Type="String" />
只要只选择了一个项目,这可以正常工作,但选择第二个项目失败并显示以下消息: 将 nvarchar 值“4,5”转换为数据类型 int 时转换失败。
但是,我不明白何时将其转换为 INT。我已经为 SELECT 查询尝试了许多不同的格式化尝试(例如将字符串封装在括号中(例如 "(4,5)" ),但我还没有找到合适的方法来完成这项工作。似乎格式化是问题,但也许我还缺少其他东西。
【问题讨论】:
-
我创建了一个表来存储要传递给查询的值。只是看起来不太对。
-
问题在于 IN 语句需要在列表中的每个字符串项周围打勾:IN('4', '5') 并且您的进程正在传入 ('4, 5')跨度>
标签: asp.net sql sql-server-2005