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

截取指定字符串:

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'))

在这里插入图片描述

完结撒花

在这里插入图片描述


版权声明:本文为weixin_43475992原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。