Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Trouver l'index de la dernière occurrence d'une sous-chaîne à l'aide de T-SQL

Manière directe? Non, mais j'ai utilisé l'inverse. Littéralement.

Dans les routines précédentes, pour trouver la dernière occurrence d'une chaîne donnée, j'utilisais la fonction REVERSE(), suivie de CHARINDEX, suivie à nouveau de REVERSE pour restaurer l'ordre d'origine. Par exemple :

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

montre comment extraire les noms de fichiers de base de données réels à partir de leurs "noms physiques", quelle que soit la profondeur de leur imbrication dans les sous-dossiers. Cela ne recherche qu'un seul caractère (la barre oblique inverse), mais vous pouvez en tirer parti pour des chaînes de recherche plus longues.

Le seul inconvénient est que je ne sais pas dans quelle mesure cela fonctionnera sur les types de données TEXT. Je suis sur SQL 2005 depuis quelques années maintenant et je ne suis plus au courant de l'utilisation de TEXT - mais je crois me souvenir que vous pouviez utiliser LEFT et RIGHT dessus ?

Philippe