Hallo an alle Entwickler!
Ich suche nach einer Möglichkeit, per allgemeinen Tabellenausdruck mehrere Suchbegriffe an eine Tabelle zu übergeben.
Das Ergebnis soll die Schnittmenge aller Rows zurückgeben, in denen man alle eingegebenen Suchbegriffe finden kann (egal in welcher Tabellenspalte).
Mein derzeitiger Select sieht folgendermaßen aus:
[highlight=sql]
DECLARE @sString as Varchar(50);
SET @sString = '%Testartikel%';
WITH tmpsearch (ItemID, Cycle)
AS
(
SELECT i.ItemID, 0 as Cycle FROM Items as i
UNION ALL
SELECT i.ItemID, Cycle + 1 FROM Items as i
INNER JOIN tmpsearch tmp ON tmp.ItemID = i.ItemID
AND Cycle < 5 AND
AND i.Description LIKE @sString
)
SELECT ItemID FROM tmpsearch where Cycle > 4;
[/highlight]
Um das ganze etwas einfach zu halten, würde ich statt einer TABLE Variable lieber ein Array verwenden. Gibt es Arrays in MSSQL und wenn ja, wie deklariere ich sie? Gibt es zudem noch eine Funktion, die mir den letzten Index dieses Array zurückgibt?
Gruß, MrM^
Ich suche nach einer Möglichkeit, per allgemeinen Tabellenausdruck mehrere Suchbegriffe an eine Tabelle zu übergeben.
Das Ergebnis soll die Schnittmenge aller Rows zurückgeben, in denen man alle eingegebenen Suchbegriffe finden kann (egal in welcher Tabellenspalte).
Mein derzeitiger Select sieht folgendermaßen aus:
[highlight=sql]
DECLARE @sString as Varchar(50);
SET @sString = '%Testartikel%';
WITH tmpsearch (ItemID, Cycle)
AS
(
SELECT i.ItemID, 0 as Cycle FROM Items as i
UNION ALL
SELECT i.ItemID, Cycle + 1 FROM Items as i
INNER JOIN tmpsearch tmp ON tmp.ItemID = i.ItemID
AND Cycle < 5 AND
AND i.Description LIKE @sString
)
SELECT ItemID FROM tmpsearch where Cycle > 4;
[/highlight]
Um das ganze etwas einfach zu halten, würde ich statt einer TABLE Variable lieber ein Array verwenden. Gibt es Arrays in MSSQL und wenn ja, wie deklariere ich sie? Gibt es zudem noch eine Funktion, die mir den letzten Index dieses Array zurückgibt?
Gruß, MrM^
Comment