2016-02-17 3 views
1

Я ниже запроса:Возвращает подстроку из заданной строки в SQL Server

DECLARE @url varchar (max)='http://v.mercola.com/blogs/public_blog/New-Diet-Pill-Expands-1-000-Times-in-Your-Stomach-24728.aspx' 
SELECT replace(replace(RIGHT(@URL , CHARINDEX ('/' ,REVERSE(@URL))-1),'.aspx',''),'-',' ') as abc 

возвращающий ниже выхода:

Фактический выход -

enter image description here

Ожидаемый результат

enter image description here

я хочу т.е. исключить строку после последнего вхождения -.

Какие изменения я должен сделать, чтобы получить ожидаемый результат .. В целом я хочу подстроки после последнего совпадения / и до последнего совпадения -, как показано выше.

Пожалуйста, помогите и спасибо заранее ...!

ответ

0

Попробуйте

DECLARE @url VARCHAR (max)='http://v.mercola.com/blogs/public_blog/New-Diet-Pill-Expands-1-000-Times-in-Your-Stomach-24728.aspx' 

SELECT Reverse(LEFT(mid, Charindex('/', mid) - 1)) 
FROM (SELECT Substring(Reverse(@url), Charindex('-', Reverse(@url)) + 1, Len(@url)) AS mid) a 
0

Что-то вроде этого:

DECLARE @url varchar (max)='http://v.mercola.com/blogs/public_blog/New-Diet-Pill-Expands-1-000-Times-in-Your-Stomach-24728.aspx' 

declare @suffix varchar(max) 
select @suffix = RIGHT(@URL , CHARINDEX ('/' ,REVERSE(@URL))-1) 

select left(@suffix, len(@suffix) - charindex('-', reverse(@suffix))) 

Выход:

New-Diet-Pill-Expands-1-000-Times-in-Your-Stomach 
+0

Работает тоже, спасибо .. !! –

0

Другой вариант:

DECLARE @url varchar (max)='http://v.mercola.com/blogs/public_blog/New-Diet-Pill-Expands-1-000-Times-in-Your-Stomach-24728.aspx' 

DECLARE @LastSlash int = LEN(@URL) - CHARINDEX('/', REVERSE(@URL)) + 2, 
     @LastMinus int = LEN(@URL) - CHARINDEX ('-', REVERSE(@URL)) + 1 

SELECT SUBSTRING(@URL, @LastSlash, @[email protected]) 
+0

Работы это тоже, спасибо .. !! –

Смежные вопросы