首页 > 数据库 >mysql根据字符截取字符串

mysql根据字符截取字符串

时间:2023-07-27 12:45:37浏览次数:25  
标签:index INDEX 截取 字符 SUBSTRING subStr mysql 字符串

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

标签:index,INDEX,截取,字符,SUBSTRING,subStr,mysql,字符串
From: https://www.cnblogs.com/19li/p/17584649.html

相关文章

  • mysql当一个字段以逗号隔开存多个名字,用sql取这个名字对应的id并修改
    当前有两个表,class班级表和student学生表  需求:我们需要把class班级表的student_ids中的name,改成student的id这里我们可以用“find_in_set”函数--注意s.name要在前面selectc.id,c.CLASS_NAME,GROUP_CONCAT(s.id)ascount,c.STUDENT_NAMESfromclasscleftjoinstu......
  • java截取身份证出生年月
    Java截取身份证出生年月在Java编程中,经常会遇到需要从身份证号码中提取出生年月的情况。身份证号码是一个包含了个人信息的字符串,其中包含了出生日期。在本文中,我将向你展示如何使用Java截取身份证号码中的出生年月。身份证号码结构首先,我们需要了解一下身份证号码的结构。身份......
  • java截取某个字符后面的字符串
    Java截取某个字符后面的字符串概述在Java中,如果我们需要截取某个字符后面的字符串,可以使用substring()方法。该方法允许我们从一个字符串中提取指定范围的子字符串。本文将介绍如何使用substring()方法来实现这一功能。步骤下面是实现截取某个字符后面的字符串的步骤:步骤......
  • MySQL
    一、简介1、sql、DB、DBMS分别是什么,他们之间的关系?DB:DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)DBMS:DataBaseManagementSystem(数据库管理系统,常见的有:MySQL、Oracle、DB2、Sybase、SqlServer...)SQL:结构化查询语言,是一门标准通用的语言,标准的sql适合于所有的数......
  • QueryWrapper 查询数据库字段不为null和空字符串
    https://wenku.csdn.net/answer/50db66695ced42d380b982b85cd5fca7......
  • Java基础和MySQL
    Java基础==和equals的区别==比较的是值是否相等。==作用于基本数据类,他比较的是内容==作用于引用数据类型,比较的是地址值equals比较的是对象是否是同一个对象,比较的是对象的内容equals()方法存在于Object类中,在没有重写之前和==是一样,也是比较的是引用数据类型的地址......
  • MySQL- 3
    Smiling&Weeping----爱你一个人就好像创造一种信仰侍奉着一个随时会陨落的神第三章复杂一点的查询之前介绍了sql基本的查询用法,接下来介绍一些相对复杂的用......
  • Debian11 TAR包安装MySQL8.0
    MySQL8下载地址访问https://downloads.mysql.com/archives/community/版本选择8.0.32,操作系统选择Linux-Generic,操作系统版本选择Linux-Generic(glibc2.17)(x86,64-bit);选择CompressedTARArchive,MinimalInstall点击下载,或者使用下面的URL直接下载https://cdn.my......
  • grafana9.5 使用MySQL存储面板数据
    使用MySQL存储Grafana9.5面板数据Grafana是一个流行的开源数据可视化和监控工具,它支持各种数据源来生成漂亮的仪表板。其中一个常用的数据源是MySQL数据库。本文将介绍如何在Grafana9.5中使用MySQL存储面板数据,并提供相应的代码示例。安装Grafana9.5首先,我们需要安装Grafana......
  • grafana mysql 饼图
    Grafana与MySQL饼图的可视化引言Grafana是一款流行的开源数据可视化工具,可以将各种数据源中的数据转化为丰富的图表展示。MySQL是一种常用的关系型数据库,被广泛应用于各种应用程序中。本文将介绍如何使用Grafana将MySQL中的数据可视化为饼图,并提供相应的代码示例。步骤步骤1:安......