SQL to get the filename without an extension

Steve Sohcot
Jul 18, 2024

--

Maybe I didn’t Google hard enough but I couldn’t find a decent solution, so I wrote one myself:

DECLARE @myField AS VARCHAR(50) = 'testing\1234\abc.xyz'

SELECT
@myField AS original
, CHARINDEX('\', REVERSE(@myField)) AS positionLastSlash
, SUBSTRING (@myField
, LEN(@myField ) - CHARINDEX('\', REVERSE(@myField)) + 2
, LEN( @myField)
) AS afterLastSlash
, CHARINDEX('.',
SUBSTRING (@myField , LEN(@myField ) - CHARINDEX('\', REVERSE(@myField)) + 2 , LEN( @myField) )
) AS positionOfPeriod
, CASE WHEN CHARINDEX('\', REVERSE(@myField)) > 0 THEN
LEFT (
SUBSTRING (@myField , LEN(@myField ) - CHARINDEX('\', REVERSE(@myField)) + 2 , LEN( @myField) )
, CHARINDEX('.', SUBSTRING (@myField , LEN(@myField ) - CHARINDEX('\', REVERSE(@myField)) + 2 , LEN( @myField) )) - 1
)
ELSE '' END

AS fileNameWithoutExtension

It’ll look like this:

You can then incorporate that into a SELECT statement replacing ‘myField’ with your field name.

--

--