-1
votes

Élément d'extraction à la position particulière

Quelle est la syntaxe SQL pour trouver le nom du dernier annuaire à partir d'un chemin de fichier. Par exemple, je veux récupérer le nom du dernier répertoire, à savoir C code>

entrée: p> xxx pré>

sortie: p>

C


3 commentaires

Quel DBMS s'agit-il - SQL Server? Mysql? Comment identifiez-vous un répertoire? Basé sur le préfixe?


Il serait raisonnable de le faire en tant que calcul post-traitement, pas de côté de la base de données


DBMS- SQL Server and Prefix serait "Répertoire" pour un répertoire et je souhaite recevoir le nom du dernier répertoire dans le chemin donné.


3 Réponses :


-1
votes

Avez-vous essayé le Sélectionner la droite ou gauche ? Si c'est une corde, je pense que c'est faisable. Aussi, il y a quelque chose dans là, vous devrez jouer autour de vous.


3 commentaires

Si c'est ce que vous recherchez Stackoverflow.com/questions/46226235/...


Il n'y a pas de position fixe du dernier répertoire, donc je ne peux pas utiliser le caractère droit ou gauche pour aller chercher le caractère. Il peut y avoir n'importe quel niveau de sous-dossiers


Pas vraiment une réponse ... plus adaptée à un commentaire.



0
votes

SQL Server n'a pas de très bonnes capacités de traitement de chaînes. Mais, avec des efforts, vous pouvez faire ce que vous voulez.

L'idée de clé est que le dernier "répertoire" est le premier "_yrotcerid" dans la chaîne inversée. Ensuite, certains lopping et ajustement obtiennent ce que vous voulez: xxx


2 commentaires

Cela a fonctionné pour moi. Mais si "/ répertoire_a / répertoire_b / répertoire_c / dossier1 / dossier2" 'est des données d'une colonne d'une table. C'est me donner l'erreur.


Disons que DirectoryName est Coulmn of Sites Tableau: Sélectionnez v. *, Gauche (V.Dir, Charindex ('/', V.DIR) - 1) En tant que DirName à partir de (Valeurs (Nom de la page de répertoire). Valeurs (trucs (T.Path, 1, Len (T.Path) - Charindex (inverse ('Directory_'), inverse (T.Path)) + 1, '')) V (DIR) des emplacements



1
votes
DECLARE @path VARCHAR(100)='/Directory_A/Directory_B/Directory_C/Folder1/Folder2'

SELECT SUBSTRING( @path,LEN(@path)-LEN(SUBSTRING(@path,PATINDEX('%folder%',@path), 100))-1, 1)

1 commentaires

Ce n'est pas nécessaire 1 caractère. Il peut y avoir n'importe quoi '/ répertoire_a / répertoire_b / répertoire_cbccccv / dossier1 / dossier2'. Nous devons récupérer la chaîne entière qui est après le dernier répertoire_