代码改变世界

mysql根据字符截取字符串

2023-07-27 12:31  皖医小生  阅读(139)  评论(0编辑  收藏  举报

mysql根据字符截取字符串(总结)

1.1 前言

SUBSTRING_INDEX

1.2 需要实现的实际需求

如下表为文档目录表,其中关键字段dir_seq为目录层级索引,dir_name为目录名称。假设现在我们获取到dir_seq值为 .341.346.347.348. ,现在我们想获取到各级别的目录主键。
1.3 截取一级目录主键

步骤一:
SUBSTRING_INDEX(dir_seq,'.',2)
截取结果:  .341
步骤二:
SUBSTRING_INDEX( SUBSTRING_INDEX(dir_seq,'.',2) ,'.',-1)
截取结果:  341


1.3 截取二级目录主键

步骤一:

   先根据字符'.'从左边开始第三个'.'开始截取左边的字符串:SUBSTRING_INDEX(dir_seq,'.',3)

截取结果: .341.346

步骤二:

在步骤一的截取结果再根据字符'.'从右边开始第一个'.'开始截取右边的字符串:SUBSTRING_INDEX( SUBSTRING_INDEX(dir_seq,'.',3) ,'.',-1)

截取结果: 346

select SUBSTRING_INDEX(SUBSTRING_INDEX(' .341.346.347.348. ','.',3),'.',-1) from dual;

1.4 截取三级目录主键,其实从上面两个例子已经看出规律,先从左截取三级目录id所在的位置,再从右截取第一个'.'的位置。。。

1.5 mysql相关字符串截取的函数详解:

SUBSTRING_INDEX(subStr, matchStr, index)
根据匹配的字符以及出现的位置开始截取字符串
subStr: 需要截取的字段
matchStr: 匹配的字符
index: 从第几个匹配的字符,为正数时从左边开始查找并向左截取,为负数时从右边开始查找并向右截取

LEFT(subStr,index) 
从左边开始向右截取,截至第index位(index从1开始)
subStr: 需要截取的字段
index: 停止截取的位置(包括该位置的字符)

RIGHT(subStr,index) 
从右边开始向左截取,截至从右边开始数第index位(index从1开始)
subStr: 需要截取的字段
index: 停止截取的位置(包括该位置的字符)

SUBSTRING(subStr,  index)
当index为负数时,从右边开始向左截取,截至从右边开始数第index位
当index为正数时,从左边开始向右截取,截至从左边开始数第index位
subStr: 需要截取的字段
index: 停止截取的位置(包括该位置的字符)


转发来源https://blog.51cto.com/u_16099231/6514271