sql >> Databasteknik >  >> RDS >> Sqlserver

Hitta index för senaste förekomsten av en delsträng med T-SQL

Enkelt sätt? Nej, men jag har använt det omvända. Bokstavligen.

I tidigare rutiner, för att hitta den sista förekomsten av en given sträng, använde jag REVERSE()-funktionen, följt CHARINDEX, följt igen av REVERSE för att återställa den ursprungliga ordningen. Till exempel:

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

visar hur man extraherar de faktiska databasfilnamnen från deras "fysiska namn", oavsett hur djupt kapslade i undermappar. Detta söker bara efter ett tecken (omvänt snedstreck), men du kan bygga vidare på detta för längre söksträngar.

Den enda nackdelen är att jag inte vet hur bra detta kommer att fungera på TEXT-datatyper. Jag har använt SQL 2005 i några år nu och är inte längre insatt i att arbeta med TEXT -- men jag verkar minnas att du kan använda VÄNSTER och HÖGER på det?

Philip



  1. MS SQL Server korstabellsbegränsning

  2. Förebyggande triggers

  3. Få ett undantag ORA-00942:tabell eller vy finns inte - när du infogar i en befintlig tabell

  4. PostgreSQL Regex Ordgränser?