如何从文件路径中提取文件名

Fra*_*lin 1 t-sql sql-server

我正在尝试提取给定可变文件路径的文件名。一些路径示例:

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

C:\MSSQL\DATA\CentralDB.mdf

C:\DATA\CentralDB.mdf
Run Code Online (Sandbox Code Playgroud)

预期输出应该只是文件名,即:

CentralDb.mdf CentralDB.ldf

文件路径长度可以因位置而异。

scs*_*mon 6

您可以使用字符串的反转来查找第一个 '\',然后获取它的 RIGHT 值。

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)
Run Code Online (Sandbox Code Playgroud)

  • 使用你的例子。`从 Sys.database_files 中选择 RIGHT(physical_name,CHARINDEX('\',REVERSE(physical_name))-1)` (3认同)