在SQL Server 2012中,我有以下工作代码来提取文件名和最低文件夹名。可以有任何级别的子文件夹 - 我只需要最内层的文件夹和文件名称。 SQL Server中有更容易阅读的方法吗?从SQL Server中获取完整文件名的最后一个文件夹和文件名
预期结果
MySubFolder/MyFile_4.0_20170901031307_2697.zip
当前工作SQL
DECLARE @FileName varchar(200) = 'D:\SourceFiles\MyFolder\MySubFolder\MyFile_4.0_20170901031307_2697.zip'
DECLARE @TotalRecords INT
DECLARE @SectionName VARCHAR(128)
DECLARE @FileOnly VARCHAR(128)
SET @FileName = REPLACE(@FileName, '/', '\')
DECLARE @xml xml = '<r><n>' + REPLACE(@FileName, '\', '</n><n>') + '</n></r>'
DECLARE @FoldersList TABLE(FId INT IDENTITY(1,1), FolderOrFileName VARCHAR(128))
INSERT INTO @FoldersList (FolderOrFileName)
SELECT n.value('.', 'varchar(200)')
FROM @xml.nodes('r/n') n(n)
SELECT @TotalRecords = COUNT(*) FROM @FoldersList
SELECT @SectionName = FolderOrFileName FROM @FoldersList WHERE Fid = (@TotalRecords - 1)
SELECT @FileOnly = FolderOrFileName FROM @FoldersList WHERE Fid = (@TotalRecords)
SELECT @SectionName+'/'[email protected]
他们正试图解析字符串。没有指示文件夹甚至在服务器上。 –
为字符串添加了一个版本。我不认为这是事实,因为你知道@MartinSmith,这已经被问过很多次了。感谢您向我指出 – scsimon