web-dev-qa-db-fra.com

Scinder la chaîne et prendre le dernier élément

J'ai une table avec ces valeurs:

Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx
OurStory/MeettheFoodieandtheMD.aspx
TheFood/OurMenu.aspx

Je veux obtenir ceci

Diet.aspx
MeettheFoodieandtheMD.aspx
OurMenu.aspx

Comment puis-je faire ceci?

23
Antonio Papa

La façon de le faire en SQL: 

SELECT SUBSTRING( string , LEN(string) -  CHARINDEX('/',REVERSE(string)) + 2  , LEN(string)  ) FROM SAMPLE;

JSFiddle ici http://sqlfiddle.com/#!3/41ead/11

37
jazzytomato
SELECT REVERSE(LEFT(REVERSE(columnName), CHARINDEX('/', REVERSE(columnName)) - 1))
FROM   tableName

ORHER SOURCE (s)

10
John Woo

S'il vous plaît essayez:

select url,(CASE WHEN CHARINDEX('/', url, 1)=0 THEN url ELSE RIGHT(url, CHARINDEX('/', REVERSE(url)) - 1) END)
from(
    select 'Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx' as url union
    select 'OurStory/MeettheFoodieandtheMD.aspx' as url union
    select 'MeettheFoodieandtheMD.aspx' as url
)xx
4
TechDo

J'ai corrigé la solution de jazzytomato pour les jetons à caractère unique (D) et pour les jetons simples (Diet.aspx)

SELECT SUBSTRING( string , LEN(string) -  CHARINDEX('/','/'+REVERSE(string)) + 2  , LEN(string)  ) FROM SAMPLE;
0
langus