当前位置: 首页 > article >正文

MySQL之SUBSTRING 和 SUBSTRING_INDEX函数

在 MySQL 中,SUBSTRINGSUBSTRING_INDEX 是用于字符串操作的函数,它们在字符串处理中非常有用。以下是对这两个函数的详细介绍:

1. SUBSTRING 函数

概述

SUBSTRING 函数用于从一个字符串中提取子字符串。它可以根据指定的起始位置和长度来提取部分字符串。SUBSTRING 有多种用法,取决于参数的形式。

语法
SUBSTRING(string, start, length)
  • string:需要提取子字符串的原始字符串。
  • start:子字符串的起始位置。这个位置从 1 开始计数,如果 start 是负数,则从字符串末尾开始计算位置。
  • length(可选):指定子字符串的长度。如果省略,则提取从 start 位置到字符串末尾的所有字符。
用法示例
  1. 提取固定长度的子字符串

    SELECT SUBSTRING('Hello, World!', 8, 5);
    

    结果:World

  2. 从某个位置开始提取到字符串末尾

    SELECT SUBSTRING('Hello, World!', 8);
    

    结果:World!

  3. 使用负数起始位置

    SELECT SUBSTRING('Hello, World!', -6, 5);
    

    结果:World

其他变体

MySQL 还提供了 SUBSTRING_INDEX 函数,用于基于分隔符提取子字符串。

2. SUBSTRING_INDEX 函数

概述

SUBSTRING_INDEX 函数用于从一个字符串中提取子字符串,方法是基于指定的分隔符截取。你可以指定从字符串的开头或结尾进行截取,提取子字符串。

语法
SUBSTRING_INDEX(string, delimiter, count)
  • string:需要提取子字符串的原始字符串。
  • delimiter:分隔符,用于定义截取字符串的边界。
  • count:指定要返回的子字符串的数量。如果 count 为正数,则从字符串开头开始截取;如果为负数,则从字符串末尾开始截取。
用法示例
  1. 从开头开始基于分隔符截取

    SELECT SUBSTRING_INDEX('apple,orange,banana', ',', 2);
    

    结果:apple,orange

    (解释:count 为 2,因此提取第 1 和第 2 个分隔符之前的子字符串)

  2. 从末尾开始基于分隔符截取

    SELECT SUBSTRING_INDEX('apple,orange,banana', ',', -2);
    

    结果:orange,banana

    (解释:count 为 -2,因此从末尾提取最后 2 个分隔符之后的子字符串)

  3. 只提取第一个子字符串

    SELECT SUBSTRING_INDEX('apple,orange,banana', ',', 1);
    

    结果:apple

  4. 只提取最后一个子字符串

    SELECT SUBSTRING_INDEX('apple,orange,banana', ',', -1);
    

    结果:banana

总结

  • SUBSTRING 是用于从字符串中提取指定位置和长度的子字符串。
  • SUBSTRING_INDEX 则是基于分隔符从字符串中提取指定数量的子字符串。

这两个函数在字符串处理、数据解析和格式化中非常有用,尤其是在从文本数据中提取特定信息时。


http://www.kler.cn/a/282458.html

相关文章:

  • 动态规划-完全背包问题——518.零钱兑换II
  • java中volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?
  • Rust 语言学习笔记(五)
  • 用OMS进行 OceanBase 租户间数据迁移的测评
  • C++:基于红黑树封装map和set
  • Nginx 上安装 SSL 证书并启用 HTTPS 访问
  • 力扣134.加油站
  • mysql 数据区备份
  • 物联网架构之CDH集群部署
  • 软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程剖析
  • Python中的if语句,让你轻松实现逻辑控制!!
  • <Godot>工厂游戏练习笔记一<2D网格地图>
  • 基于JSP技术的在线BLOG网系统
  • ROS 简单导航
  • E30.【C语言】练习:sizeof和strlen的习题集(B)
  • Oracle TDE和表空间中的数据量有关系吗?
  • CMake构建学习笔记7-freetype库的构建
  • 【pgAdmin4】创建/删除:数据库Database和数据库表Table
  • Python办公自动化 获取文本数据 支持多种类型文件
  • android MutableLiveData 赋值
  • 甲基化组学全流程生信分析教程
  • 链游开发教学
  • 项目配置在nacos配置中心进行管理
  • SK Hynix明年将开发基于96/128 GB DDR5的CXL 2.0内存解决方案
  • 深入理解Python中的装饰器链(Chaining Decorators)
  • git pull时如何避免输入用户名和密码?