Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL Server中的指定字符串返回子字符串_Sql_Sql Server_Sql Server 2008_Substring_Charindex - Fatal编程技术网

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

从SQL Server中的指定字符串返回子字符串,sql,sql-server,sql-server-2008,substring,charindex,Sql,Sql Server,Sql Server 2008,Substring,Charindex,我有以下疑问: 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' 
SELECT replace(replace(RIGHT(@URL , CHARINDEX ('/' ,REVERSE(@URL))-1),'.aspx',''),'-',' ') as abc
返回以下输出:

实际产出-

预期产出

i、 e我想消除上次出现
-
之后的字符串

要获得预期的输出,我必须进行哪些更改。。 总之,我希望在上次出现
/
之后和上次出现
-
之前有一个子字符串,如上所示

请提前帮助和感谢

类似这样:

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' 

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'

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)
另一种选择:

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)