Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Encontre o índice da última ocorrência de uma substring usando T-SQL


Maneira direta? Não, mas já usei o inverso. Literalmente.

Nas rotinas anteriores, para encontrar a última ocorrência de uma determinada string, utilizava-se a função REVERSE(), seguida de CHARINDEX, seguida novamente de REVERSE para restaurar a ordem original. Por exemplo:
SELECT
   mf.name
  ,mf.physical_name
  ,reverse(left(reverse(physical_name), charindex('\', reverse(physical_name)) -1))
 from sys.master_files mf

mostra como extrair os nomes reais dos arquivos de banco de dados de seus "nomes físicos", não importa quão profundamente aninhados nas subpastas. Isso pesquisa apenas um caractere (a barra invertida), mas você pode construir sobre isso para strings de pesquisa mais longas.

A única desvantagem é que não sei como isso funcionará em tipos de dados TEXT. Estou no SQL 2005 há alguns anos e não estou mais familiarizado com o trabalho com TEXT - mas me lembro que você poderia usar LEFT e RIGHT nele?

Philip