截取指定字符前面或后面的字符串

截取指定字符串:

1.任务需求

假设数据库中:

某一列数据像这样,每个数据都有同一个字符“/”,

这时如果我们需要获取这个字符的前面的字符串或后面的字符串,应该用什么SQL语句呢?

如下面的一段字符串:

‘38-1006312/100B231/2016303029’

用的语法:

SUBSTRING ( expression, start, length )        --SUBSTRING('列名',起始位数,要取的字符串长度)

2.获取“/”前面字符串:

--截取第一字符串
--语法:  列名(要操作的字符串)  ,从第一位取值 ,要取的字符串长度是“/”字符在字段中的位置减1                  
select  SUBSTRING('38-1006312/100B231/2016303029',1, CHARINDEX('/','38-1006312/100B231/2016303029')-1)

执行结果:

image-20220407160111575

3.获取“/”后面所有字符串:

--截取第一个'/'后面的字符串
--  列名    ,  从“/”字符后一位开始       ,  要取的字符串长度是字段总长度减去“/”字符所在位置
select  SUBSTRING(
    '38-1006312/100B231/2016303029'
    ,CHARINDEX('/','38-1006312/100B231/2016303029')+1
    , len('38-1006312/100B231/2016303029')-CHARINDEX('/','38-1006312/100B231/2016303029'))

执行结果:

image-20220407160320739

这还不能算完结…

对于截取末尾"/"字符后面的字符串,功能后续添加

好了,刚才充电回来:

获取最后'/'的末尾字符串
–查找最后出现的位置
select len(
‘38-1006312/100B231/2016303029’)-CHARINDEX(‘/’,REVERSE(‘38-1006312/100B231/2016303029’))+1

语法

--查找最后出现的位置
select  len('38-1006312/100B231/2016303029')-CHARINDEX('/',REVERSE('38-1006312/100B231/2016303029'))+1

--注意自己的辨别与上面语句区别
select  SUBSTRING('38-1006312/100B231/2016303029',len('38-1006312/100B231/2016303029')-CHARINDEX('/',REVERSE('38-1006312/100B231/2016303029'))+2,len('38-1006312/100B231/2016303029'))

在这里插入图片描述

完结撒花

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值