declare @s varchar(50);
set @s = 'aaaaa/bbbbb/ccccc/ddddd/eeeee'
/* last one: */
select
RIGHT(@s, CHARINDEX('/', REVERSE(@s)) - 1)
/* penultimate one */
select
RIGHT(
LEFT(@s, LEN(@s) - CHARINDEX('/', REVERSE(@s))),
CHARINDEX('/', REVERSE(
LEFT(@s, LEN(@s) - CHARINDEX('/', REVERSE(@s)))
)) - 1
)
«Последний» довольно прост, объяснений не требуется.
«Предпоследний», по существу, равен «последнему», и все вхождения @s
заменены на:
LEFT(@s, LEN(@s) - CHARINDEX('/', REVERSE(@s)))
, который производит 'aaaaa/bbbbb/ccccc/ddddd'
Чтобы проверить, достаточно ли косых черт в строке для успешного выполнения этого выражения, вы можете сделать
CASE WHEN LEN(@s) - LEN(REPLACE(@s, '/', '')) >= 2
THEN /* expression here */
ELSE /* error value here */
END