SSRS中, 如何将Multi Value传递到SQL的in clause中.
来源:互联网 发布:ug编程铣孔螺旋进刀 编辑:程序博客网 时间:2024/06/05 12:49
SSRS中, 可以创建个可多选的参数, 该参数可以作为查询项传递给SQL语句.
我遇到的问题是这样的.
1. 我创建了一个可以多选的参数.
2. 将该参数传递到了SQL的一条Select中.
3. select中是这样写的"select * from table where column in (@CoverageID)"
问题就是, SSRS上面的Report只要该值为单一的时候有效, 只要和复选,就没有用了.
比如说,有值1,2,3,4,5在列表中, 如果选择2个以上, SQL就执行不出正确的结果.
看了一下, 原来问题出在参数项上.
如果选择一个值的话@CoverageID的值就是 '1' 这样的话 查询语句为 select * from table where column in ('1') 这样结果是正确的.
如果选择二个或者2个以上的值@CoverageID的值就变成了'1,2,3,4',等多个以逗号为分隔的字符串,
查询就是select * from table where column in ('1,2,3,4') 语法是正确的, 但是肯定不是我们想要的查询结果.
真正的查询是select * from table where column in('1','2','3','4')
既然找到问题了, 解决就只是时间的问题.
这里利用一个现成的功能, 将以指定字符串, 用指定的分隔符分开, 存于一个只有一列的table变量中.
CREATE function [dbo].[f_split](@c varchar(2000),@split varchar(2))
returns @t table(col varchar(20))
as
begin
while(charindex(@split,@c)<>0)
begin
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),'')
end
insert @t(col) values (@c)
return
end
GO
当函数创建好之后,
上面的查询可以稍改一下, 改为 select * from table where column in (select * from dbo.f_split(@CoverageID,','))
就OK了, 我们的SSRS 从此可以支持in clause了~
- SSRS中, 如何将Multi Value传递到SQL的in clause中.
- 在SQL语句中如何将字符串变量传递给In语句
- SQL语句中如何将字符串变量传递给In语句
- jsp页面中如何将参数传递到引入的jsp页面中
- rails如何将数据传递到js中?
- rails如何将数据传递到js中?
- 如何控制SSRS报表中数据的访问权限
- 如何将sql server中数据写到sqlce的sdf文件中.
- sql server 2008 中如何将一个数据库中已建好的表导入到另一个数据库中
- sql server 2008 中如何将一个数据库中已建好的表导入到另一个数据库中
- sql 中如何将A表的数据更新到B表中,数据表备份语句
- 一个简单的问题:在Django中如何将views.py中的变量传递到HTML/JavaScript中?
- 在sql语句中,怎样将参数做为表名传递到查询语句中
- 如何将excel导入到sql server中
- 如何将EXCEL数据导入到SQL数据库中来
- 如何将SQL Server数据库迁移到新服务器中
- 如何将NorthWind数据库添加到SQL Exprss 2005中
- 如何将XX.sql文件导入到MYSQL数据库中
- 游大观园 戏九连环(谜中智@Mathematica)
- 链接问题
- Mac OS X: DeployStudio更新v1.0rc16
- inetinfo.exe 与IIS admin Service
- 3层结构
- SSRS中, 如何将Multi Value传递到SQL的in clause中.
- 驱动程序开发技术详解读书笔记(八)
- 敏捷实践有感I
- 内联函数
- 歌词:千年一梦
- 《ASP.NET夜话》一书勘错表及本人工作情况汇报
- “程序员羊皮卷”中的职场江湖——《程序员羊皮卷》书评(4)
- C# 任务管理器种隐藏进程
- 从U盘的格式化看 ~