2
votes

Délimiter la chaîne hors de la barre oblique inverse SQL / SSIS

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)


2 commentaires

3 Réponses :


1
votes

Vous devez mettre le double du nombre de vos barres obliques inverses.

Dans votre exemple, cela devrait être

Token(@[User::DynamicFilename],"\\", 7)


0 commentaires

3
votes

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


0 commentaires

1
votes

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)


1 commentaires

ou utilisez la réponse de Hadi avec le nombre de jetons!