在 SQL Server 中从完整路径提取文件名(sql 玩转文件路径)
Posted 覆雨翻云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 SQL Server 中从完整路径提取文件名(sql 玩转文件路径)相关的知识,希望对你有一定的参考价值。
四个函数:
--1、根据路径获取文件名
-- ============================================= -- Author: Paul Griffin -- Create date: 18 January 2015 -- Description: Returns a filename with extension -- from a full path: -- D:TempResourcesImagesMy.Picture.jpg -- ==> My.Picture.jpg -- ============================================= CREATE FUNCTION [dbo].[GetFileName] ( @Path NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @FileName NVARCHAR(MAX) DECLARE @ReversedPath NVARCHAR(MAX) SET @ReversedPath = REVERSE(@Path) SELECT @FileName = RIGHT(@Path, CHARINDEX(‘‘, @ReversedPath)-1) RETURN @FileName END
--2、根据路径获取文件名(去掉扩展名)
-- ============================================= -- Author: Paul Griffin -- Create date: 18 January 2015 -- Description: Returns a filename without extension -- from a full path: -- D:TempResourcesImagesMy.Picture.jpg -- ==> My.Picture -- ============================================= CREATE FUNCTION [dbo].[GetFileNameWithoutExtension] ( @Path NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @FileName NVARCHAR(MAX) DECLARE @ReversedPath NVARCHAR(MAX) DECLARE @ExtLength INT SET @ReversedPath = REVERSE(@Path) SELECT @ExtLength = CHARINDEX(‘.‘, @ReversedPath) SELECT @FileName = RIGHT(@Path, CHARINDEX(‘‘, @ReversedPath)-1) SELECT @FileName = LEFT(@FileName, LEN(@FileName) - @ExtLength) RETURN @FileName END
3、根据路径获取路径目录(无文件名)
-- ============================================= -- Author: Paul Griffin -- Create date: 18 January 2015 -- Description: Returns the path without the file name -- from a full path: -- D:TempResourcesImagesMy.Picture.jpg -- ==> D:TempResourcesImages -- ============================================= CREATE FUNCTION [dbo].[GetDirectoryPath] ( @Path NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @FileName NVARCHAR(MAX) DECLARE @ReversedPath NVARCHAR(MAX) DECLARE @PathLength INT SET @ReversedPath = REVERSE(@Path) SELECT @PathLength = CHARINDEX(‘‘, @ReversedPath) SELECT @FileName = LEFT(@Path, LEN(@Path) - @PathLength) RETURN @FileName END
4、获取文件扩展名
-- ============================================= -- Author: Paul Griffin -- Create date: 18 January 2015 -- Description: Returns the extension only -- from a full path: -- D:TempResourcesImagesMy.Picture.jpg -- ==> jpg -- ============================================= CREATE FUNCTION [dbo].[GetExtension] ( @Path NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @FileName NVARCHAR(MAX) DECLARE @ReversedPath NVARCHAR(MAX) DECLARE @ExtLength INT SET @ReversedPath = REVERSE(@Path) SET @FileName = ‘‘ SELECT @ExtLength = CHARINDEX(‘.‘, @ReversedPath) IF (@ExtLength > 0) BEGIN SELECT @FileName = RIGHT(@Path, @ExtLength - 1) END RETURN @FileName END
--代码使用示例1
SELECT Location ,dbo.GetDirectoryPath(Location) AS [Path Only] ,dbo.GetFileName(Location) AS [Full File Name] ,dbo.GetFileNameWithoutExtension(Location) AS [File Name without Ext ,dbo.GetExtension(Location) AS Ext FROM Images
--代码使用示例2
declare @filePath nvarchar(4000) set @filepath=‘D:messagesattachrecv .abe3b3d58161ccb3de7ab63754bb3f15abc.doc‘ SELECT dbo.GetDirectoryPath(@filepath) AS [Path Only] ,dbo.GetFileName(@filepath) AS [Full File Name] ,dbo.GetFileNameWithoutExtension(@filepath) AS [File Name without Ext] ,dbo.GetExtension(@filepath) AS Ext
得到结果:
path only:D:messagesattachrecv .abe3b3d58161ccb3de7ab63754bb3f15
Full File Name:abc.doc
File Name without Ext:abc
Ext:.doc
转载出处:http://www.codeforge.cn/article/249284
以上是关于在 SQL Server 中从完整路径提取文件名(sql 玩转文件路径)的主要内容,如果未能解决你的问题,请参考以下文章
如何从完整的 html 文本中从 <a> 标记中提取 url GET 参数