以下不起作用,但類似這樣的事情是我正在尋找。在SqlServer Reporting Services查詢中結合「like」和「in」?
select *
from Products
where Description like (@SearchedDescription + %)
SSRS使用中,前一個參數的@操作符來模擬「中」,和我沒有找到一個方法來匹配一個字符串,字符串列表。
以下不起作用,但類似這樣的事情是我正在尋找。在SqlServer Reporting Services查詢中結合「like」和「in」?
select *
from Products
where Description like (@SearchedDescription + %)
SSRS使用中,前一個參數的@操作符來模擬「中」,和我沒有找到一個方法來匹配一個字符串,字符串列表。
有關於如何使用LIKE運算符帶參數的幾個選項。
OPTION 1
如果添加%至參數值,那麼你可以自定義過濾器LIKE將如何處理。例如,您的查詢可能是:
SELECT name
FROM master.dbo.sysobjects
WHERE name LIKE @ReportParameter1
對於數據設置爲使用LIKE語句正確,那麼你可以使用像sysA的形式%的參數值。當我在2008年SSRS測試樣本報告使用此代碼,我返回了以下四個表:
sysallocunits
sysaudacts
sysasymkeys
sysaltfiles
OPTION 2
另一種方式來做到這一點,不需要用戶添加任何「% '符號是生成一個具有代碼並優於變量的變量。
DECLARE @DynamicSQL NVARCHAR(MAX)
SET @DynamicSQL =
'SELECT name, id, xtype
FROM dbo.sysobjects
WHERE name LIKE ''' + @ReportParameter1 + '%''
'
EXEC (@DynamicSQL)
這將使您更好地掌握如何使用LIKE語句。如果您不希望用戶注入任何其他運算符,那麼您總是可以添加代碼以除去非字母數字字符,然後將其合併到最終查詢中。
選項3
您可以創建一個控制此功能的存儲過程。我通常更喜歡使用存儲過程作爲SSRS的數據源,並且從不允許動態生成SQL,但這只是我的偏好。這有助於在執行依賴關係分析檢查時具有可發現性,並且還可以確保最佳查詢性能。
方案4
創建.NET代碼組件,其有助於動態地生成的SQL代碼。我認爲這是一種矯枉過正和糟糕的選擇,但它可以工作。
你有沒有嘗試過的事情:
select * from Products where Description like (@SearchedDescription + '%')
(把單引號%符號在嗎?)
Dano,您使用的是SSRS的哪個版本?如果是RS2000,多參數列表 不正式支持,但有一個解決辦法....
以及該解決方法是什麼?如果選擇了多個值, – Dano 2009-05-14 23:20:03
嘗試這樣做,它不一樣,如果超過工作1值被選中。 – Dano 2008-11-17 20:34:53