如何在没有文件名的情况下检索文件路径,您将如何更改此代码?

时间:2015-10-20 12:25:52

标签: sql string filepath

SELECT
LTRIM(
 RTRIM(
 REVERSE(
  SUBSTRING(
   REVERSE(FullFilePath),
  0,
   CHARINDEX('\', REVERSE(FullFilePath),0)
)
)
)
)
FROM FileSystem

此代码取自http://www.kodyaz.com/articles/how-to-extract-filename-from-path-using-sql-functions.aspx

如何更改它以便仅检索没有文件名的文件路径?

3 个答案:

答案 0 :(得分:1)

你想要在最后'\'之前的所有内容,所以像这样:

select left(FullFilePath,
            len(FullFilePath) - charindex('\', reverse(FullFilePath) - 1)
           )

答案 1 :(得分:1)

尝试以下内容:

SELECT LEFT(FullFilePath, LEN(FullFilePath) - CHARINDEX('\', REVERSE(FullFilePath)) + 1)

示例数据

CREATE TABLE #FileSystem (
  FileID int identity(1,1),
  FullFilePath nvarchar(1000)
)

INSERT INTO #FileSystem VALUES (
 N'D:\SQLDatabases\SQLSampleDatabase.mdf'
);
INSERT INTO #FileSystem VALUES (
 N'C:\Program Files\Microsoft SQL Server\100\Samples\License.rtf'
);

<强>输出

D:\SQLDatabases\
C:\Program Files\Microsoft SQL Server\100\Samples\

答案 2 :(得分:1)

Select REVERSE(
             SUBSTRING(REVERSE(FullFilePath),CHARINDEX('\',REVERSE(FullFilePath),0),
LEN(FullFilePath)))  
    FROM FileSystem

试试这个,它有效。