2016-07-25 14 views
0

Ich bin nicht in der Lage, die richtige Syntax für die Verwendung eines Parameters innerhalb einer LIKE-Klausel in einer SSIS SQL Server OLEDB Source-Komponente zu finden. Für ein triviales Beispiel, die folgenden Einzel einspaltige Tabelle „tblTeams“, Teams und Teammitglieder als einzelne Zeichenfolge Listing (es ist dumm, ich weiß):Verwenden von SSIS-Parametern in LIKE-Abfrage

╔═══════════════╗ 
║ TeamMembers ║ 
╠═══════════════╣ 
║ A - Joe  ║ 
║ A - Melissa ║ 
║ B - Frank  ║ 
║ C - Angela ║ 
║ A - Luis  ║ 
║ C - Ashley ║ 
║ B - Sam  ║ 
╚═══════════════╝ 

möchte ich eine for-Schleife auszuführen, die Dateien exportiert von Mitgliedern pro Team. Die Schleife hat eine Eingabevariable aus einem Array von Teamnamen: "A", "B", "C" usw. Ich möchte diese Variable als Parameter in einer OLE DB-Quelle verwenden, um die Teammitglieder als solche auszuwählen :

SELECT [TeamMembers] 
FROM tblTeams 
WHERE [TeamMembers] LIKE '?%'; --where ? is param = "A", "B", or "C" 

Die Syntax hier jedoch berücksichtigt den Parameter Platzhalter als Fragezeichenzeichenfolge. Wenn Sie den Platzhalter nach außen verschieben, wird die LIKE-Klausel unterbrochen. Ist es möglich, einen SSIS-Parameter in einem LIKE zu verwenden?

+0

Sie haben Findstring-Funktion verwenden http://stackoverflow.com/questions/4739230/is-it-possible-to-perform-a-like-statement-in-a-ssis-expression – niketshah90

+2

versuchen SELECT [ TeamMitglieder] FROM tblTeams WO [TeamMembers] mögen? + '%' –

+0

@ChintuS FINDSTRING ist hier nicht direkt anwendbar, weil ich eine SQL-Abfrage schreibe, keinen Ausdruck. Ein guter Vorschlag, danke. – BradV

Antwort

1

Wir können verwenden? und es dem String-Datentyp zuordnen.

IE WÄHLEN [TeamMembers] FROM tblTeams WHERE [TeamMembers] wie ? + '%'

Wie? wird automatisch in das richtige Datenformat konvertiert.

2

Variable erstellen SQL_Select Typ String und einen Ausdruck "SELECT [TeamMembers] FROM tblTeams WHERE [TeamMembers] LIKE '" + [User::TeamMemberName] + "%'" für diese Variable definieren. Hier nahm ich an Sie verwendet eine Variable TeamMemberName Typ String mit oben genannten param A, B oder C.
Dann auf OLE DB-Quelle Komponente - set SQL-Befehl aus Variable Anzeige Datenzugriffsmodus und wählen Sie User :: SQL_Select in eine Dropdown-Liste für den Variablennamen