我创建了一个存储过程:
@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个字符)时,一切都工作正常。
答案 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)