获取URL最后一个 ‘/’ 之后的字符

在开发项目的过程中,经常遇到需要解析论坛,博客等的URL的问题,比如:'abc/def/jkl' 或 'abc/def/jkl/',获取最后一个‘/’之后的所有字符‘jkl’,由于特殊字符'/'的个数不固定,从前向后正向解析URL,有点困难,其实有更简单的方法,那就是逆向解析法。

逆向解析的思路非常简单,因为最后一个特殊字符'/'的位置不确定,变通一下,使用reverse函数,将最后一个特殊字符'/'转化为第一个特殊字符,获取第一个特殊字符'/'之前的所有字符。 

Script1,用于不以 ‘\’结尾的URL

复制代码
declare @ExpressionToSearch varchar(max)
set @ExpressionToSearch='/eeabc/def/abc/jkl'
--set @ExpressionToSearch='eeabc/def/abc/jkl'
--select reverse(@ExpressionToSearch)

select right(@ExpressionToSearch,
                iif(charindex('/',reverse(@ExpressionToSearch),1)=0,
                    len(@ExpressionToSearch),
                    charindex('/',reverse(@ExpressionToSearch),1)-1)
            )
复制代码

script2,如果以'/'结尾,取最后两个‘/'字符之间的字符串,类似从字符串 'abc/def/jkl/' 中取‘jkl’

复制代码
declare @ExpressionToSearch varchar(max)
set @ExpressionToSearch='/eeabc/def/abc/jkl/'
--set @ExpressionToSearch='eeabc/def/abc/jkl'
--select reverse(@ExpressionToSearch)

select left(StrToSearch,len(StrToSearch)-charindex('/',reverse(StrToSearch),1))
from 
(
select right(@ExpressionToSearch,
                iif(charindex('/',reverse(@ExpressionToSearch),2)=0,
                    len(@ExpressionToSearch),
                    charindex('/',reverse(@ExpressionToSearch),2)-1)
            )
)as T(StrToSearch)
复制代码

 

作者悦光阴
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。
分类: SQL Server
标签: TSQL







本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/5068109.html,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值