使用 Transact-SQL 从用户定义的 文件路径中获取文件名或文件扩展名的简便方法






4.76/5 (18投票s)
本文将演示如何使用 Transact-SQL 获取文件名或文件扩展名。
引言
本文将演示如何使用 Transact-SQL 获取文件名或文件扩展名。
背景
在将文件以二进制格式存储到 SQL Server 数据库时,开发人员有时需要仅从文件路径中获取文件名或文件扩展名,并将文件名和文件扩展名作为记录以供进一步参考。如今,Microsoft .NET Framework 提供了许多优秀的方法来获取文件名或其扩展名。我们可以考虑一个场景,我有一个应用程序,可能是 Windows 或 Web,我使用 Visual Basic 6.0 / vbScript,其中一项新功能是将用户定义的文件以二进制格式存储到 SQL Server 数据库中。因此,我们需要开发一个函数来返回文件名/扩展名。在这种情况下,我的关注点是,也可以使用 Transact-SQL 实现。
Using the Code
使用代码非常简单;如果您查看脚本,您会看到我使用了非常常见的技术,即字符串反转逻辑来执行此操作。我编写了两个存储过程
dbo.spGetDocumentName
dbo.spGetDocumentNature
以下是一个示例代码:
示例 - 1
-- =============================================
-- Author: Md. Marufuzzaman>
-- Create date:
-- Description: Return the file name from a given location.
-- =============================================
/*
DECLARE @VAL VARCHAR(MAX)
EXEC dbo.spGetDocumentName 'E:\Guideline & Programming Tools & _
Resources\Resource - 2\Microsoft Visual Basic 6.0 Source\myFile.pdf', @VAL OUTPUT
PRINT @VAL
*/
CREATE PROCEDURE [dbo].[spGetDocumentName]
-- Add the parameters for the stored procedure here
@FILE_PATH VARCHAR(MAX)
,@NAME VARCHAR(MAX) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--DECLARE @FILE_PATH VARCHAR(MAX)
DECLARE @FILE_LENGTH INT
DECLARE @FILE_NAME VARCHAR(MAX)
SET @FILE_LENGTH = LEN(@FILE_PATH)
WHILE (@FILE_LENGTH <> 0)
BEGIN
IF SUBSTRING(@FILE_PATH, @FILE_LENGTH, 1) = '\'
BEGIN
SET @FILE_NAME = RIGHT(@FILE_PATH, LEN(@FILE_PATH) - @FILE_LENGTH)
BREAK
END
SET @FILE_LENGTH = @FILE_LENGTH - 1
END
SET @NAME = @FILE_NAME
RETURN
END
GO
示例 - 2
-- =============================================
-- Author: Md. Marufuzzaman>
-- Create date:
-- Description: Return the nature of the file from a given location.
-- =============================================
/*
DECLARE @VAL VARCHAR(MAX)
EXEC dbo.spGetDocumentNature'E:\Guideline & Programming Tools & _
Resources\Resource - 2\Microsoft Visual Basic 6.0 Source\myFile.pdf', @VAL OUTPUT
PRINT @VAL
*/
CREATE PROCEDURE [dbo].[spGetDocumentNature]
-- Add the parameters for the stored procedure here
@FILE_PATH VARCHAR(MAX)
,@EXTN VARCHAR(10) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--DECLARE @FILE_PATH VARCHAR(MAX)
DECLARE @FILE_LENGTH INT
DECLARE @FILE_NATURE VARCHAR(10)
SET @FILE_LENGTH = LEN(@FILE_PATH)
WHILE (@FILE_LENGTH <> 0)
BEGIN
IF SUBSTRING(@FILE_PATH, @FILE_LENGTH, 1) = '.'
BEGIN
SET @FILE_NATURE = RIGHT(@FILE_PATH, LEN(@FILE_PATH) - @FILE_LENGTH)
BREAK
END
SET @FILE_LENGTH = @FILE_LENGTH - 1
END
SET @EXTN = @FILE_NATURE
RETURN
END
结论
希望您喜欢。尽情享受吧!
历史
- 2009 年 8 月 9 日:初始发布