Get substring in SQL Server
Try this
SELECT RIGHT(
'C:\SomeRandomFile\Filename.dat',
CHARINDEX(
'.',
REVERSE(
'C:\SomeRandomFile\Filename.dat'
),
0)
-1)
DECLARE @originalstring VARCHAR(100)
SET @originalstring = 'hello.exe'
DECLARE @extension VARCHAR(50)
SET @extension = SUBSTRING(@originalstring, CHARINDEX('.', @originalstring) + 1, 999)
SELECT @extension
That should do it, I hope! This works as long as you only have a single '.' in your file name - separating the file name from the extension.
Marc
You can use reverse
along with substring
and charindex
to get what you're looking for:
select
reverse(substring(reverse(filename), 1,
charindex('.', reverse(filename))-1)) as FileExt
from
mytable
This holds up, even if you have multiple .
in your file (e.g.-hello.world.exe
will return exe
).
So I was playing around a bit with this, and this is another way (only one call to reverse
):
select
SUBSTRING(filename,
LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
mytable
This calculates 10,000,000 rows in 25 seconds versus 29 seconds for the former method.