sql >> Database >  >> RDS >> Sqlserver

Vind index van het laatste voorkomen van een subtekenreeks met behulp van T-SQL

Rechtlijnige manier? Nee, maar ik heb het omgekeerde gebruikt. Letterlijk.

In eerdere routines gebruikte ik de functie REVERSE() om het laatste voorkomen van een bepaalde string te vinden, gevolgd door CHARINDEX, gevolgd door REVERSE om de oorspronkelijke volgorde te herstellen. Bijvoorbeeld:

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

laat zien hoe de feitelijke databasebestandsnamen uit hun "fysieke namen" kunnen worden gehaald, ongeacht hoe diep ze in submappen zijn genest. Dit zoekt wel naar slechts één teken (de backslash), maar u kunt hierop voortbouwen voor langere zoekreeksen.

Het enige nadeel is dat ik niet weet hoe goed dit zal werken op TEKST-gegevenstypen. Ik gebruik SQL 2005 nu al een paar jaar en ben niet meer vertrouwd met het werken met TEXT -- maar ik meen me te herinneren dat je LINKS en RECHTS erop kunt gebruiken?

Filip



  1. Percona XtraBackup vergelijken met MySQL Enterprise Backup:deel één

  2. Beperking wijzigen?

  3. Aan de slag met SQL op Oracle Application Express

  4. Verwijder alle spaties uit een string in SQL Server