Introduction
This article will demonstrate how to get a file name or a file extension as well using Transact-SQL.
Background
Several times, developers need to get only the file name or file extension from a file path when they are working on storing the file in binary format into SQL server database, considering the file name and the file extension as a record for further references. Now a days, Microsoft .NET Framework provides some excellent methods for getting the file name or its extension as well. We can consider the scenario where I have an application, it may be windows or web, where I use Visual Basic 6.0 / vbScript and one of the new features will be to store a user defined file in binary format into SQL Server database. So we need to develop a function which will return the file name / extension. In this context, my concern is that it is also possible by using Transact–SQL.
Using the Code
Working with the code is very simple; if you look at the scripts you will see that I used a very common technique which is string reverse logic for doing this. I wrote two stored procedures:
dbo.spGetDocumentName
dbo.spGetDocumentNature
A sample code example is given below:
Example - 1
CREATE PROCEDURE [dbo].[spGetDocumentName]
@FILE_PATH VARCHAR(MAX)
,@NAME VARCHAR(MAX) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
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
Example - 2
CREATE PROCEDURE [dbo].[spGetDocumentNature]
@FILE_PATH VARCHAR(MAX)
,@EXTN VARCHAR(10) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
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
Conclusion
I hope that you like it. Enjoy!
History
- 9th August 2009: Initial post
A well experienced leader with successful track record of software development, product innovations, brand management and corporate communication etc. Some successful product innovations have also achieved and awards “Most Valuable Professional” (MVP) at 2010 and 2011 by codeproject.com and also selected as a mentor of codeproject.com. Published over 100 technical articles in various software development resource sites (i.e., codeprojetc.com, Microsoft MSDN, and IEEE & IBM (In progress)) and various IT Forums, Blogs etc.
Over fourteen years of professional experiences in ICT field having extensive experience in formulating corporate vision and long term strategy. Leading development related functions including design, development, services, data management and analytics, customer experience management, content services, digital analytics and optimization.I have also more than two years’ of strong experience in mobile-VAS (platform development).
An individual with results-driven approach and relentless in pursuit of excellence from a business and organizational standpoint.Honest, believes in transparency, commitment and teamwork.
Expertise: Software/Solution Architect, Technical Research, MIS, Data Analytics, Data Mining, BI, SaaS platform base application development, Large scale Win32 Form/Web based business software solutions, Security, Enterprise applications development, integration, etc.
Technologies/Tools: Microsoft.Net, Microsoft SQL Server , Oracle, MySQL, ETL, Visual C#, VB.NET, ASP.NET, , Python, Java, API, MVC, Cloud Computing, SaaS, Open FaaS, AWS,AWS Lambda, MS Azure, WebAPI , WPF, WCF, PHP, Microsoft Power BI, SPSS, PS2, R, Add-In, Visual Basic etc.
.Net UI component: Telerik, DevExpress, Ext.Net etc.
Scripting language: JavaScript, AngularJS, node.JS etc.
Source control / Subversion: Git, Smart SVN, Assembla etc.
Development methodologies: Agile,RAD etc.
Project Management / Issues Tracking Tools: JIRA, Trello, Slack, Clockingit etc.