Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Finden Sie den Index des letzten Vorkommens einer Teilzeichenfolge mit T-SQL

Einfacher Weg? Nein, aber ich habe das Gegenteil verwendet. Buchstäblich.

Um das letzte Vorkommen einer bestimmten Zeichenfolge zu finden, habe ich in früheren Routinen die Funktion REVERSE() verwendet, gefolgt von CHARINDEX, wieder gefolgt von REVERSE, um die ursprüngliche Reihenfolge wiederherzustellen. Zum Beispiel:

SELECT
   mf.name
  ,mf.physical_name
  ,reverse(left(reverse(physical_name), charindex('\', reverse(physical_name)) -1))
 from sys.master_files mf

zeigt, wie man die tatsächlichen Datenbankdateinamen aus ihren "physischen Namen" extrahiert, egal wie tief in Unterordnern verschachtelt. Dies sucht zwar nur nach einem Zeichen (dem Backslash), aber Sie können darauf für längere Suchzeichenfolgen aufbauen.

Der einzige Nachteil ist, dass ich nicht weiß, wie gut dies bei TEXT-Datentypen funktionieren wird. Ich arbeite jetzt seit einigen Jahren mit SQL 2005 und bin mit der Arbeit mit TEXT nicht mehr vertraut -- aber ich meine mich zu erinnern, dass Sie LEFT und RIGHT darauf verwenden konnten?

Philipp