This is a discussion on Splitting a filename out of a filepath within the SQL Server forums, part of the Microsoft SQL Server category; --> I have to create a view where the filename is seperated from the path to the file. Examples of ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| 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? |
| |||
| 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. |
| |||
| 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" <zeldorblat@gmail.com> wrote in message news:1132341746.949663.317500@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. > |
| ||||
| 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" <zeldorblat@gmail.com> wrote in message news:1132586940.573948.135490@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. > |