仅使用部分字段时在SSRS中进行多次搜索

时间:2015-04-15 14:57:38

标签: tsql reporting-services

我创建了一个存储过程:

@DeviceID nvarchar(20) =''

WITH EXECUTE AS CALLER
AS

SELECT  
amd.BRANDID,
amd.DEVICEID

FROM AMDEVICETABLE amd
where 
left(amd.Deviceid,len(@DeviceID)) in (@DeviceID)

amd.Deviceid的长度约为15个字符

在Visual Studio中,我创建了一个参数@DeviceID,当我输入例如ABCDE(来自Deviceid的前5个字符)时,一切都工作正常。

问题是我想把多个值放在一起 jhmcl *,jhmgd *。

1 个答案:

答案 0 :(得分:0)

所以我创建了自己的小版本报告,我相信问题是你的LEN()函数。我很惊讶它没有返回错误,因为它在SQL Server 2014的报表生成器(简单版本的SSRS)中出错。我会测试你的LEN(@DeviceID)返回的是什么。我敢打赌它没有返回正确的值。相反,您可以尝试这样来涵盖所有可能的模式。我不知道它将如何在性能方面发挥作用。

SELECT DeviceID
FROM YourTable
WHERE LEN(DeviceID,1) IN (@DeviceID)
OR LEN(DeviceID,2) IN (@DeviceID)
OR LEN(DeviceID,3) IN (@DeviceID)
..
OR LEN(DeviceID,15),IN(@DeviceID)