Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - SQL Server 2005: Mittels T-SQL String teilen


UGrohne - Di 25.11.08 12:29
Titel: SQL Server 2005: Mittels T-SQL String teilen
Hallo,

ich brauche eine Stored Procedure, die mir einen per Parameter übergebenen String anhand der Leerzeichen aufteilt und damit eine Where-Bedingung ausfüllt, damit ich eine Volltextsuche mit jedem einzelnen Wort durchführen kann. Aber irgendwie komme ich nicht auf den richtigen Weg.

Kann mir jemand einen Tipp dazu geben?


UGrohne - Di 25.11.08 17:14

OK, hab was dazu geschrieben, was auch funktioniert. Da das Ganze aber für eine Volltextsuche werden sollte und ich inzwischen auf den Trichter gekommen bin, wie ich selbige im SQL-Server verwende, brauche ich das Statement gar nicht mehr :).

Hier jedenfalls mein Ergebnis, was sich aber sicherlich noch verbessern lässt:

SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
  DECLARE @charPos integer
  CREATE TABLE #searchTerms
  (
    term nvarchar(100)
  )
    SET @searchTerms = RTRIM(LTRIM(@searchTerms))

  WHILE (LEN(@searchTerms)>0)
  BEGIN
    SELECT @charPos = CHARINDEX(' ',@searchTerms)
    IF (@charPos>0)
    BEGIN
      INSERT INTO #searchTerms VALUES (SUBSTRING(@searchTerms,1,@charPos - 1))
      SET @searchTerms = SUBSTRING(@searchTerms,@charPos+1,LEN(@searchTerms)-@charPos)
    END ELSE BEGIN
      INSERT INTO #searchTerms VALUES (@searchTerms)
      SET @searchTerms = ''
    END
  END