子串从数据库文件路径中提取

时间:2013-12-27 17:22:42

标签: sql sql-server database tsql

我需要从T-sql查询中的路径列表中提取子字符串..例如,我需要获取数据库文件的路径..如果我使用以下查询...

Select distinct (physical_name) from sys.master_files

我只想拥有数据库文件路径,而不是..文件名......我......

C:\Data\Microsoft instead of C:\Data\Microsoft\db1.mdf
C:\Data\Microsoft instead of C:\Data\Microsoft\db2.mdf
D:\Log\Microsoft instead of D:\Log\Microsoft\db1.ldf
D:\Log\Microsoft instead of D:\Log\Microsoft\db2.ldf..

提前致谢....

1 个答案:

答案 0 :(得分:1)

仅仅因为我无法抗拒:

SELECT DISTINCT

LEFT(physical_name, LEN(physical_name) - CHARINDEX('\',REVERSE(physical_name))) as physical_path

FROM sys.master_files

使用CHARINDEX和反向字符串找到路径中最后一个'\'的位置,然后通过LEFT将所有内容切割到该点。