Es gibt einige Möglichkeiten, wie Sie den LIKE-Operator mit einem Parameter verwenden können.
OPTION 1
Wenn Sie das % zum Parameterwert hinzufügen, können Sie anpassen, wie der LIKE-Filter verarbeitet wird. Zum Beispiel könnte Ihre Abfrage folgendermaßen aussehen:
SELECT name
FROM master.dbo.sysobjects
WHERE name LIKE @ReportParameter1
Um das LIKE-Statement richtig zu verwenden, könnten Sie einen Parameterwert wie sysa% verwenden. Als ich einen Beispielbericht in SSRS 2008 mit diesem Code getestet habe, habe ich die folgenden vier Tabellen zurückgegeben:
sysallocunits
sysaudacts
sysasymkeys
sysaltfiles
OPTION 2
Ein weiterer Weg, dies zu tun, der nicht erfordert, dass der Benutzer das '%' Symbol hinzufügt, besteht darin, eine Variable zu generieren, die den Code enthält, und die Variable auszuführen.
DECLARE @DynamicSQL NVARCHAR(MAX)
SET @DynamicSQL =
'SELECT name, id, xtype
FROM dbo.sysobjects
WHERE name LIKE ''' + @ReportParameter1 + '%''
'
EXEC (@DynamicSQL)
Dies gibt Ihnen eine feinere Kontrolle darüber, wie das LIKE-Statement verwendet wird. Wenn Sie nicht möchten, dass Benutzer zusätzliche Operatoren einfügen, können Sie immer Code hinzufügen, um nicht alphanumerische Zeichen zu entfernen, bevor sie in die endgültige Abfrage eingefügt werden.
OPTION 3
Sie können eine gespeicherte Prozedur erstellen, die diese Funktionalität steuert. Ich ziehe es im Allgemeinen vor, gespeicherte Prozeduren als Datenquellen für SSRS zu verwenden und niemals dynamisch generierten SQL zuzulassen, aber das ist nur eine meiner Vorlieben. Dies hilft bei der Auffindbarkeit bei der Durchführung von Abhängigkeitsanalysen und ermöglicht es Ihnen auch, eine optimale Abfrageleistung sicherzustellen.
OPTION 4
Erstellen Sie eine .NET-Code-Bibliothek, die hilft, den SQL-Code dynamisch zu generieren. Ich denke, dies ist übertrieben und eine schlechte Wahl, aber es könnte theoretisch funktionieren.