SQL SERVER 使用函数CHARINDEX,REVERSE组合。获取字符最后一次出现的位置,最后一个括号内的内容。

@sqlserver 如何获得最后一个括号的内容或获取最后一次出现的位置

SQL SERVER 使用CHARINDEX,REVERSE组合 获取字符最后一次出现的位置,最后一个括号内的内容.

使用函数CHARINDEX,REVERSE组合

例子

代码片

有一个字段值是 : ‘SF others (not currently used) (60988_i)’
我的最终目的是要拿到 60988_i 但是不确定在第几位,唯一能确定的就是最后一位是 ) 结尾
以下sql能在sqlserver直接运行

  declare @org varchar(255)
set @org  = 'SF others (not currently used) (60988_i)'
select 
  len(@org)+1 - CHARINDEX('(', REVERSE(@org))   first -- 最有一次出现的位置要拿
 ,len(@org)+1 - CHARINDEX(')', REVERSE(@org))   second
 ,(len(@org)+1 - CHARINDEX(')', REVERSE(@org)))  - (len(@org)+1 - CHARINDEX('(', REVERSE(@org))+1)    number
 ,REVERSE(@org)   [REVERSE] 
 ,CHARINDEX('(',@org)  CHARINDEX
 ,SUBSTRING(@org
            ,len(@org)+1 - CHARINDEX('(', REVERSE(@org))+1  --因为是取括号后面的以为所以还要+1
                     ,(len(@org)+1 - CHARINDEX(')', REVERSE(@org)))  - (len(@org)+1 - CHARINDEX('(', REVERSE(@org))+1)
                     )

结果如图显示我最后的无名列已经取到了。

在这里插入图片描述
其他几列分别对应我要计算以及取数的位置信息
思路:
1.先使用 REVERSE 将取值倒叙。
2.然后判断倒叙的 ( 第一次出现的位置
3.判断倒叙的 )出现的位置
4.然后两个位置取位数相减,再用 SUBSTRING 截取 第二步的位置后的差得到 60988_i

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值