在 SQL Server 中从完整路径提取文件名(sql 玩转文件路径)

转载 2015年07月10日 11:46:08

四个函数:

--1、根据路径获取文件名

-- =============================================
-- Author:        Paul Griffin
-- Create date:   18 January 2015
-- Description:   Returns a filename with extension
--                from a full path:
--                    D:\Temp\Resources\Images\My.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:\Temp\Resources\Images\My.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:\Temp\Resources\Images\My.Picture.jpg
--                ==> D:\Temp\Resources\Images
-- =============================================
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:\Temp\Resources\Images\My.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:\messages\attachrecv\0.abe3b3d58161ccb3de7ab63754bb3f15\abc.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:\messages\attachrecv\0.abe3b3d58161ccb3de7ab63754bb3f15

Full File Name:abc.doc

File Name without Ext:abc

Ext:.doc



转载出处:http://www.codeforge.cn/article/249284



sql 遍历指定目录下的文件夹和文件

DECLARE @Path nvarchar(260)SET @Path = E:/study/SQLIF RIGHT(@Path, 1) /SET @Path = @Path + /IF OBJE...
  • lengjing126
  • lengjing126
  • 2011年06月20日 18:30
  • 1324

SQL遍历文件夹 / 文件,返回文件夹列表信息

/* EXEC master.dbo.xp_cmdshell 'copy c:\a.txt d:\log\'  --- Copy EXEC master.dbo.xp_subdirs 'd...
  • dafan
  • dafan
  • 2015年08月11日 21:28
  • 1786

File类三种得到路径的方法

getPath public String getPath()将此抽象路径名转换为一个路径名字符串。所得到的字符串使用默认名称分隔符来分隔名称序列中的名称。 返回: 此抽象路径名的字符串形式 ...
  • ssyan
  • ssyan
  • 2010年11月29日 20:37
  • 12892

获取全路径文件名的文件名/文件位置/文件的后缀名/文件的前缀

$ pfName=/home/sgs/test.txt # 获取全路径文件名 $ echo $pfName /home/sgs/test.txt # 获取文件名 $ echo ${p...
  • l_nan
  • l_nan
  • 2014年07月14日 10:17
  • 2956

dos环境下获取完整路径中的文件名

折腾了大半个晚上,总算找着了这个问题的解决方案。答案看上去是非常简单的,只要对dos命令略有研究的人应该很容易想到,可是对于我这样头次正面接触dos的人而言,可是花了九牛二虎之力! 要从一个完整的路径...
  • techtracker
  • techtracker
  • 2010年11月01日 11:13
  • 2777

SSIS【Foreach 循环容器_Foreach 文件枚举器】(导入路径下的所有txt文件的内容)

SSIS_Foreach 循环容器_Foreach 文件枚举器(导入路径下的所有txt文件的内容) 1. 拖动一个 【Foreach 循环容器】到【控制流】中,再拖动一个【数据流任务】到【For...
  • kk185800961
  • kk185800961
  • 2013年10月04日 13:07
  • 6239

java获取路径,文件名的方法总结

java获取路径,文件名的方法总结1. 文件路径获取Thread.currentThread().getContextClassLoader().getResource(“”) //获得资源文件(.c...
  • dudefu011
  • dudefu011
  • 2015年11月18日 18:56
  • 6009

java如何操作字符串取得绝对路径中的文件名及文件夹名

java操作字符串取得绝对路径中的文件名及文件夹名
  • weiqiang_1989
  • weiqiang_1989
  • 2016年03月26日 17:25
  • 2784

打开sql_trace及查询trace文件路径文件名

1、打开trace alter session set sql_trace =true; 2、找trace文件       方法1:alter session set tracefil...
  • duqiangatom
  • duqiangatom
  • 2012年12月17日 19:44
  • 242

(C#)常用类(文件名提取、文件路径提取、后缀名提取、数字转中文、数字转

using System; using System.Collections.Generic; using System.Text;  namespace   { class Uti...
  • bobo830
  • bobo830
  • 2011年09月07日 16:39
  • 722
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在 SQL Server 中从完整路径提取文件名(sql 玩转文件路径)
举报原因:
原因补充:

(最多只允许输入30个字)