2016-10-21 19 views
-1

Ich versuche, den Dateinamen mit einem variablen Dateipfad zu extrahieren. Einige Beispiele Pfad:Wie kann ich den Dateinamen aus einem Dateipfad extrahieren

C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\CentralDB.mdf 

C:\MSSQL\DATA\CentralDB.mdf 

C:\DATA\CentralDB.mdf 

Erwartete Out Put sollte nur die Dateinamen sein, das heißt:

CentralDb.mdf CentralDB.ldf

Der Dateipfad Länge Form Ort zu Ort variieren.

+3

[Wie frage ich ** gut ** Frage?] (Http://stackoverflow.com/help/how-to-ask) - Ihre Frage fehlt jede Art von Kontext, Erklärung dessen, was Sie Versuch es zu tun - sehr unklar, sehr verwirrend - du musst das verbessern! –

+0

Es ist sehr unklar .... was Sie erreichen möchten ... Sie möchten eine SQL-Funktion erstellen, die einen Pfad erhält und nur den MDF-Dateinamen zurückgibt? – Hackerman

+0

DECLARE @t TABELLE ( val VARCHAR (8000) ); INSERT INTO @ t (val) VALUES ('C: \ Programme \ Microsoft SQL Server \ MSSQL12.MSQLSERVER \ MSSQL \ DATA \ CentralDB.mdf'); EINFÜGEN IN @t (val) VALUES ('C: \ MSSQL \ DATA \ CentralDB.mdf'); INSERT INTO @ t (val) WERTE ('C: \ DATA \ CentralDB.mdf'); SELECT RECHTS (val, CHARINDEX ('\', REVERSE (val)) - 1) VON @ t; ' –

Antwort

4

Sie können die Rückseite der Zeichenfolge verwenden, um das erste '\' zu finden und dann den RIGHT-Wert zu übernehmen.

declare @var varchar(4000) 

set @var = 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\CentralDB.mdf' 
select RIGHT(@var,CHARINDEX('\',REVERSE(@var))-1) 

set @var = 'C:\DATA\CentralDB.mdf' 
select RIGHT(@var,CHARINDEX('\',REVERSE(@var))-1) 

set @var = 'C:\MSSQL\DATA\CentralDB.mdf' 
select RIGHT(@var,CHARINDEX('\',REVERSE(@var))-1) 
+1

Verwenden Sie Ihr Beispiel. 'Wählen Sie RIGHT (physical_name, CHARINDEX ('\', REVERSE (physikalischer_name)) - 1) Aus Sys.database_files' –

Verwandte Themen