Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Trova l'indice dell'ultima occorrenza di una sottostringa usando T-SQL

Modo diretto? No, ma ho usato il contrario. Letteralmente.

Nelle routine precedenti, per trovare l'ultima occorrenza di una determinata stringa, ho usato la funzione REVERSE(), seguita da CHARINDEX, seguita di nuovo da REVERSE per ripristinare l'ordine originale. Ad esempio:

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

mostra come estrarre i nomi dei file di database effettivi dai loro "nomi fisici", non importa quanto profondamente nidificati nelle sottocartelle. Questo cerca solo un carattere (la barra rovesciata), ma puoi basarti su questo per stringhe di ricerca più lunghe.

L'unico aspetto negativo è che non so quanto bene funzionerà sui tipi di dati TEXT. Sono stato su SQL 2005 per alcuni anni e non ho più dimestichezza con il lavoro con TEXT, ma mi sembra di ricordare che potresti usare SINISTRA e DESTRA su di esso?

Filippo