类似于这个问题:link
然而我已经掌握了这一点。我的问题是,我们刚刚在工作中添加的一个新报告具有参数值(即:10-新建,20-取消,30-完成)。在我的一生中,我不知道如何为同一个参数传递多个值。(因此,在前面的示例中,选择10-New和30-Complete作为参数值)。
这可以做到吗?如果是这样,又是如何做到的呢?
发布于 2009-09-01 19:52:21
我相信你和其他报告一样,只是用逗号分隔你的列表(例如,10,20),这就是为什么你需要一个函数来将逗号分隔的字符串分割成一个表,用于你的where子句(听起来你已经介绍过了)
发布于 2009-09-01 20:53:39
如果要向参数传递多个值,请首先确保将该参数标记为允许多个值。
然后,在您的查询中,确保使用某种拆分函数来分隔字符串。
发布于 2009-10-31 09:11:31
你不需要拆分它。您可以执行以下操作...
确保逗号-delim字符串中的第一个和最后一个值用引号括起来(我使用udf来完成此操作)
IF CHARINDEX(',', @Param) <> 1 SET @Value = ',' + @Value
IF CHARINDEX(',', REVERSE(@Value)) <> 1 SET @Value = @Value + ','然后,将用逗号和通配符表达式过滤的字段括起来,并使用LIKE比较来过滤您的子句...
SELECT
t.Field1,
t.Field2
FROM
dbo.Table1 t
WHERE
'%,' + t.Field + ',%' LIKE @Parm在任何字符串字段上都像梦一样工作,但在日期和整数等方面可能会变得棘手。
然后,您还必须将要过滤的字段强制转换为VARCHAR。
https://stackoverflow.com/questions/1364156
复制相似问题