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

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 则是基于分隔符从字符串中提取指定数量的子字符串。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 个人手机发短信和106短信群发平台的本质区别是什么?
  • 【开发实战】QT5 + 深度学习六大应用案例
  • PCL 移动立方体三维重建——RBF算法【2024最新版】
  • 计算机网络-VRRP工作原理
  • 时下改变AI的6大NLP语言模型
  • 【TDesign】如何修改CSS变量
  • ubuntu 常见问题的收录
  • 【专题】2024全球电商消费电子市场研究报告合集PDF分享(附原数据表)
  • scss中常用的函数
  • 华为云Flexus云服务器X实例与AI大模型融合实践:打造高效智能应用
  • 【C++学习笔记 19】C++中的对象生存周期
  • springboot +easyexcel 下载工具类
  • MLLM(二)| 阿里开源视频理解大模型:Qwen2-VL
  • 毒枸杞事件启示录:EasyCVR视频AI智能监管方案如何重塑食品卫生安全防线
  • WebSocket入门
  • 2017-08-04 前端日报
  • ECS应用管理最佳实践
  • JAVA多线程机制解析-volatilesynchronized
  • js ES6 求数组的交集,并集,还有差集
  • PhantomJS 安装
  • tweak 支持第三方库
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Windows Containers 大冒险: 容器网络
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 安卓应用性能调试和优化经验分享
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 第十八天-企业应用架构模式-基本模式
  • 浮动相关
  • 关于 Cirru Editor 存储格式
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端自动化解决方案
  • 通信类
  • 一起参Ember.js讨论、问答社区。
  • 异常机制详解
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #AngularJS#$sce.trustAsResourceUrl
  • #Linux(make工具和makefile文件以及makefile语法)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (篇九)MySQL常用内置函数
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .apk 成为历史!
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .Net 8.0 新的变化
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core 项目指定SDK版本
  • .Net多线程Threading相关详解
  • .Net中的设计模式——Factory Method模式
  • @DataRedisTest测试redis从未如此丝滑
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [000-01-022].第03节:RabbitMQ环境搭建
  • [AIGC] 深入浅出 Python中的`enumerate`函数
  • [ai笔记4] 将AI工具场景化,应用于生活和工作