DECLARE @urls TABLE (URL varchar(2000))
INSERT @urls VALUES ('\\myserver\mydir1\dir2\test.txt')
INSERT @urls VALUES ('\\myserver2\dir1\dir2\dir3\test.txt')
SELECT
REVERSE(SUBSTRING(REVERSE(URL), CHARINDEX('\', REVERSE(URL))+1, 8000))
FROM
@urls
Logique :
\\myserver\mydir1\dir2\test.txt
- INVERSE =
txt.tset\2rid\1ridym\revresym\
- rechercher en premier lieu
\
- prend tout ce qui suit SUBSTRING =
2rid\1ridym\revresym\
- INVERSE =
\\myserver\mydir1\dir2
Vous n'avez pas besoin de connaître la LEN de la chaîne pour le SUBSTRING, alors utilisez simplement 8000.
Modification, après le commentaire sur l'utilisation de 8000
- Vous pouvez utiliser 2147483647 dans SUBSTRING parce qu'il prend en charge les types max.
- Doit seulement être égal ou supérieur à la longueur de la variable varchar ou de la colonne.
- Qu'en est-il des frais généraux liés au calcul de LEN ?
- Pratiquement tous les URL doivent s'inscrire dans 2083 octets
- Est-ce important ? "Optimisation prématurée", etc.