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

SQL Server 2005:charindex à partir de la fin

Que devez-vous en faire ?? Avez-vous besoin de saisir les caractères après la dernière occurrence d'un délimiteur donné ?

Si c'est le cas :inversez la chaîne et recherchez à l'aide du CHARINDEX normal :

declare @test varchar(100)
set @test = 'some.file.name'

declare @reversed varchar(100)
set @reversed = REVERSE(@test)

select 
    REVERSE(SUBSTRING(@reversed, CHARINDEX('.', @reversed)+1, 100))

Vous récupérerez "some.file" - les caractères jusqu'au dernier "." dans le nom de fichier d'origine.

Il n'y a pas de "LASTCHARINDEX" ou quelque chose comme ça directement dans SQL Server. Ce que vous pourriez envisager de faire dans SQL Server 2005 et versions ultérieures est une excellente bibliothèque d'extensions .NET et de la déployer en tant qu'assembly dans SQL Server - T-SQL n'est pas très puissant avec la manipulation de chaînes, alors que .NET l'est vraiment.