【问题标题】:Return a substring from a specified string in SQL Server从 SQL Server 中的指定字符串返回子字符串
【发布时间】:2016-05-28 23:39:53
【问题描述】:

我有以下查询:

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

返回以下输出:

实际输出 -

预期输出

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

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

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

【问题讨论】:

    标签: sql sql-server sql-server-2008 substring charindex


    【解决方案1】:

    类似这样的:

    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
    

    【讨论】:

      【解决方案2】:

      试试这个

      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 
      

      【讨论】:

        【解决方案3】:

        另一种选择:

        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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-16
          • 1970-01-01
          • 2014-03-21
          • 2020-11-12
          • 1970-01-01
          • 2017-05-12
          相关资源
          最近更新 更多