繁体   English   中英

从SQL Server中的指定字符串返回子字符串

[英]Return a substring from a specified string in 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

返回以下输出:

实际输出 -

在此输入图像描述

预期产出

在此输入图像描述

即我想消除最后一次出现-后的字符串。

我必须进行什么更改才能获得预期的输出。.总的来说,我想要在/最后一次出现之后和-最后一次出现之前的子字符串,如上所述。

请帮助并提前感谢...!

像这样:

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

尝试这个

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 

另外一个选项:

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, @LastMinus-@LastSlash)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM