OVH Cloud OVH Cloud

découpage de chaine de caractères en TSQL

4 réponses
Avatar
Dimitri
Bonjour,

voil=E0 mon probl=E9me, j'ai une chaine de caract=E8re tel que

"D:\APPS\SQLSERVER\MSSQL.1\MSSQL\Backup\msdb.bak"

et j'aimerais r=E9cup=E9rer uniquement "msdb.bak" . Est ce possible en
TSQL, si oui comment ?

cdlt
Dimitri

4 réponses

Avatar
Gilles LE BARBIER
Salut dimitri,
Essaye ceci


DECLARE @Ret int, @BackSlach int;
DECLARE @resultat varchar(50);
SET @ret = 1;
WHILE (@ret <> 0)
BEGIN
@ret = CHARINDEX ( '' , @machaine , @ret)
IF (@ret > 0)
SET @ret = @ret + 1
SET @Bakslash = @ret
END
END
@resultat = SUBSTRING(@machaine,@Bakslash , LEN(@machaine) - @Bakslash)


Non testé !!


Gilles
Avatar
Romelard Fabrice [MVP]
Bonjour,

Regarde ici :
-
http://www.codyx.org/snippet_obtenir-extension-document-depuis-url-ou-uri_166.aspx#491

Tu as un exemple adaptable à ton problème.

--
Cordialement.

Romelard Fabrice [MVP]

"Dimitri" wrote in message
news:
Bonjour,

voilà mon probléme, j'ai une chaine de caractère tel que

"D:APPSSQLSERVERMSSQL.1MSSQLBackupmsdb.bak"

et j'aimerais récupérer uniquement "msdb.bak" . Est ce possible en
TSQL, si oui comment ?

cdlt
Dimitri
Avatar
Dimitri
Merci, je vais tester !
cdlt
Dimitri


Gilles LE BARBIER a écrit :
Salut dimitri,
Essaye ceci


DECLARE @Ret int, @BackSlach int;
DECLARE @resultat varchar(50);
SET @ret = 1;
WHILE (@ret <> 0)
BEGIN
@ret = CHARINDEX ( '' , @machaine , @ret)
IF (@ret > 0)
SET @ret = @ret + 1
SET @Bakslash = @ret
END
END
@resultat = SUBSTRING(@machaine,@Bakslash , LEN(@machaine) - @Bakslash)


Non testé !!


Gilles


Avatar
thorfen
Dimitri a écrit le 06/12/2006 à 16h39 :
Bonjour,

voilà mon probléme, j'ai une chaine de caractère tel que

"D:APPSSQLSERVERMSSQL.1MSSQLBackupmsdb.bak"

et j'aimerais récupérer uniquement "msdb.bak" . Est ce possible
en
TSQL, si oui comment ?

cdlt
Dimitri


pourquoi faire une boucle ?

il y a plus simple et tous les outils dans T-SQL :

declare @test varchar(100)='D:APPSSQLSERVERMSSQL.1MSSQLBackupmsdb.bak'

select REVERSE(left(REVERSE(@test),CHARINDEX('',REVERSE(@test),0)-1))