By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,714 Members | 1,179 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,714 IT Pros & Developers. It's quick & easy.

Splitting a filename out of a filepath

P: n/a

I have to create a view where the filename is seperated from the path
to the file. Examples of the data include:

m:\images\big\myimg.jpg
m:\images\medium\myimg.jpg
z:\media\images\highqual\myimg.jpg

Is there a function that will return the position in a string of the
last \ ? With this I can easily use substring or similar to pull and
push this stuff into the fields I want. If this function does not
exist how do I move forward?

Nov 23 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
I don't think they have a CHARINDEX that searches from the end of the
string. If you want to know the last position of a character within a
string, you can abuse the reverse() function like this:

len(filepath) - charindex('/', reverse(filepath)) + 1

That gives you the position of the last '/' in the string. Note that
this only works if you're searching for a single character (that is, it
won't work if you replace the '/' with some arbitrary string with
length > 1). Also, if there is no '/' in the string, this guy will
return len(filename) + 1 as opposed to the normal charindex() which
returns 0 if the needle isn't found.

Nov 23 '05 #2

P: n/a
Thank you sir -- that should work nicely.

J

Nov 23 '05 #3

P: n/a
If you apply reverse to the first parameter in the charindex you could
search for multiple chars as well.

e.g.

declare
@search varchar(255),
@find varchar(255)

SELECT
@search = 'm:\images\big\myimg.jpg',
@find = '\'

SELECT
len(@search) - charindex(reverse(@find), reverse(@search)) + 1 ,
LEFT(@search, len(@search) - charindex(reverse(@find), reverse(@search)) +
1)

Returns
----------- -------------
14 m:\images\big\

declare
@search varchar(255),
@find varchar(255)

SELECT
@search = 'm:\images\big\myimg.jpg',
@find = 'images\'

SELECT
len(@search) - charindex(reverse(@find), reverse(@search)) + 1 ,
LEFT(@search, len(@search) - charindex(reverse(@find), reverse(@search)) +
1)

Returns

----------- --------
10 m:\images\
--
Terry Kreft

"ZeldorBlat" <ze********@gmail.com> wrote in message
news:11**********************@g44g2000cwa.googlegr oups.com...
I don't think they have a CHARINDEX that searches from the end of the
string. If you want to know the last position of a character within a
string, you can abuse the reverse() function like this:

len(filepath) - charindex('/', reverse(filepath)) + 1

That gives you the position of the last '/' in the string. Note that
this only works if you're searching for a single character (that is, it
won't work if you replace the '/' with some arbitrary string with
length > 1). Also, if there is no '/' in the string, this guy will
return len(filename) + 1 as opposed to the normal charindex() which
returns 0 if the needle isn't found.

Nov 23 '05 #4

P: n/a
>If you apply reverse to the first parameter in the charindex you could
search for multiple chars as well.


Good point...I hadn't thought of that.

Nov 23 '05 #5

P: n/a
Wll, I didn't think of using reverse in the frst place so your still ahead
of me on this one <g>.

--
Terry Kreft

"ZeldorBlat" <ze********@gmail.com> wrote in message
news:11**********************@g14g2000cwa.googlegr oups.com...
If you apply reverse to the first parameter in the charindex you could
search for multiple chars as well.


Good point...I hadn't thought of that.

Nov 23 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.