2016-10-21 14 views
-1

可変ファイルパスを指定してファイル名を抽出しようとしています。いくつかのパスの例:ファイルパスからファイル名を抽出する方法

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

C:\MSSQL\DATA\CentralDB.mdf 

C:\DATA\CentralDB.mdf 

アウト期待プットはすなわち、ファイル名だけでなければなりません:

CentralDb.mdf CentralDB.ldf

ファイルパスの長さは場所にフォームの場所を変えることができます。

+3

[いい質問**私はどのように質問しますか?](http://stackoverflow.com/help/how-to-ask) - あなたの質問には、あらゆる種類の文脈、しようとしている - 非常に不明瞭で、非常に混乱している - あなたはこれを改善する必要があります! –

+0

これは非常に不明です。達成したいもの...パスを受け取り、mdfファイル名だけを返すSQL関数を作成したいですか? – Hackerman

+0

'DECLARE @t TABLE( val VARCHAR(8000) ); INSERT INTO @t(val)VALUES( 'C:\ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ CentralDB.mdf'); INSERT INTO @t(val)VALUES( 'C:\ MSSQL \ DATA \ CentralDB.mdf'); INSERT INTO @t(val)VALUES( 'C:\ DATA \ CentralDB.mdf'); SELECT 右(val、CHARINDEX( '\'、逆(val)) - 1) FROM @t; –

答えて

4

文字列の逆を使用して、最初の '\'を検索し、その右の値を取ることができます。

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

あなたの例を使用してください。 'RIGHT(physical_name、CHARINDEX( '\'、REVERSE(physical_name)) - 1) From Sys.database_files'を選択します。 –

関連する問題