J'essaie de délimiter une chaîne basée sur une barre oblique inverse, j'ai essayé d'utiliser la fonction de jeton mais j'ai ensuite réalisé que le caractère «\» est un caractère d'échappement. Existe-t-il un moyen de délimiter la chaîne d'une barre oblique inverse?
Voici à quoi ressemble actuellement ma fonction de jeton.
Token(@[User::DynamicFilename],"\", 7)
3 Réponses :
Vous devez mettre le double du nombre de vos barres obliques inverses.
Dans votre exemple, cela devrait être
Token(@[User::DynamicFilename],"\\", 7)
Tout d'abord, utilisez une double barre oblique inverse \\
au lieu d'un \
, et vous devez utiliser TOKEN avec les fonctions TOKEN Count afin de récupérer le nom du fichier:
TOKEN(@[User::DynamicFilename],"\\",3)
Donc, si vous cherchez à extraire un nom de fichier d'un chemin de fichier complet, tokencount détectera la dernière occurrence de barre oblique inverse. Exemple:
Considérez que la valeur de @ [User :: DynamicFilename]
est:
C: \ Mes fichiers \ Folder \ file.txt
Puisque le TOKENCOUNT ()
renverra 3
alors l'expression sera
TOKEN(@[User::DynamicFilename],"\\", TOKENCOUNT(@[User::DynamicFilename],"\\"))
Et il retournera
Fichier.txt
Si vous ne savez pas jusqu'où aller avec le jeton, je suggère ce qui suit pour obtenir votre résultat.
right(@[User::DynamicFilename],findstring(reverse(@[User::DynamicFilename]),"\\")-1)
ou utilisez la réponse de Hadi avec le nombre de jetons!
Pas 2 contre-barres obliques? Comme \\ ?
docs. microsoft.com/en-us/sql/integration-services/expression s /…