深入理解并使用 MySQL 的 SUBSTRING_INDEX 函数
引言
在处理字符串数据时,经常需要根据特定的分隔符来分割字符串或提取字符串的特定部分。MySQL 提供了一个非常有用的函数 SUBSTRING_INDEX 来简化这类操作。本文将详细介绍 SUBSTRING_INDEX 的使用方法、语法,以及通过实际案例来展示其在数据库查询中的应用。
什么是 SUBSTRING_INDEX?
SUBSTRING_INDEX 是 MySQL 中的一个字符串函数,用于返回字符串从开始位置到指定的分隔符的第 N 次出现之前的部分。这个函数尤其在处理包含分隔符的字段时显得非常实用,比如文件路径、URLs、复合字符串等。
语法
函数的基本语法如下:
SUBSTRING_INDEX(str, delim, count)
- str: 要操作的原始字符串。
- delim: 用作分隔的字符或字符串。
- count: 指定分隔符出现的次数,其中:
- 如果
count是正数,返回从字符串左侧开始到分隔符第count次出现之前的部分。 - 如果
count是负数,返回从字符串右侧开始到分隔符第count次出现之前的部分。
- 如果
使用示例
-
基本使用 - 提取邮箱的用户名部分:
SELECT SUBSTRING_INDEX('username@example.com', '@', 1) as username;这将返回:
username -
提取最后一个元素 - 获取 URL 的最后一部分:
SELECT SUBSTRING_INDEX('www.example.com/pages/article', '/', -1) as last_segment;这将返回:
article -
复杂字符串操作 - 从“序列-编号”组合中分别提取序列和编号:
SELECTSUBSTRING_INDEX('123-456', '-', 1) as sequence,SUBSTRING_INDEX('123-456', '-', -1) as number;这将返回
sequence为123和number为456。
实战案例
- 考虑一个数据库中存有交通门号信息,格式为 “1-101”,“2-202”,“天-305” 等。我们需要根据门号的数字前缀和后缀进行排序,并提取前缀作为一个单独的列。以下是如何实现的 SQL 示例:
SELECT gate_no,SUBSTRING_INDEX(gate_no, '-', 1) as prefix,CAST(SUBSTRING_INDEX(gate_no, '-', 1) AS UNSIGNED) as num_prefix,CAST(SUBSTRING_INDEX(gate_no, '-', -1) AS UNSIGNED) as num_suffix
FROM gates
ORDER BY CASE WHEN gate_no LIKE '天-%' THEN 2 ELSE 1 END,num_prefix,num_suffix;
- 使用 CONCAT 函数:
SELECT CONCAT(SUBSTRING_INDEX(gate_no, '-', 1), '-') as prefix_with_dash
FROM gates;
这将返回如 “1-”, “2-”, “天-”。
结论
SUBSTRING_INDEX 是一个非常强大且灵活的工具,可以帮助开发者和数据库管理员有效地处理和分析复杂的字符串数据。通过合理的应用,可以简化许多看似复杂的字符串操作,提高数据处理的效率和准确性。
相关文章:
深入理解并使用 MySQL 的 SUBSTRING_INDEX 函数
引言 在处理字符串数据时,经常需要根据特定的分隔符来分割字符串或提取字符串的特定部分。MySQL 提供了一个非常有用的函数 SUBSTRING_INDEX 来简化这类操作。本文将详细介绍 SUBSTRING_INDEX 的使用方法、语法,以及通过实际案例来展示其在数据库查询中…...
elementUI在手机端使用遇到的问题总结
之前的博客有写过用vue2elementUI封装手机端选择器picker组件,支持单选、多选、远程搜索多选,最终真机调试的时候发现有很多细节样式需要调整。此篇博客记录下我调试过程中遇到的问题和解决方法。 一、手机真机怎么连电脑本地代码调试? 1.确…...
【初阶数据结构】5.栈和队列
文章目录 1.栈1.1 概念与结构1.2 栈的实现2.队列2.1 概念与结构2.2 队列的实现3.栈和队列算法题3.1 有效的括号3.2 用队列实现栈3.3 用栈实现队列3.4 设计循环队列 1.栈 1.1 概念与结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操…...
高通Android 12 设置Global属性为null问题
1、最近在做app调用framework.jar需求,尝试在frameworks/base/packages/SettingsProvider/res/values/defaults.xml增加属性 <integer name"def_xxxxx">1</integer> 2、在frameworks\base\packages\SettingsProvider\src\com\android\provide…...
Xcode代码静态分析:构建无缺陷代码的秘诀
Xcode代码静态分析:构建无缺陷代码的秘诀 在软件开发过程中,代码质量是至关重要的。Xcode作为Apple的官方集成开发环境(IDE),提供了强大的代码静态分析工具,帮助开发者在编写代码时发现潜在的错误和问题。…...
Qt各个版本安装的保姆级教程
文章目录 前言Qt简介下载Qt安装包安装Qt找到Qt的快捷方式总结 前言 Qt是一款跨平台的C图形用户界面应用程序开发框架,广泛应用于桌面软件、嵌入式软件、移动应用等领域。Qt的强大之处在于其高度的模块化和丰富的工具集,可以帮助开发者快速、高效地构建出…...
数学建模--优劣解距离法TOPSIS
目录 简介 TOPSIS法的基本步骤 延伸 优劣解距离法(TOPSIS)的历史发展和应用领域有哪些? 历史发展 应用领域 如何准确计算TOPSIS中的理想解(PIS)和负理想解(NIS)? TOPSIS方法在…...
Springboot开发之 Excel 处理工具(三) -- EasyPoi 简介
引言 Springboot开发之 Excel 处理工具(一) – Apache POISpringboot开发之 Excel 处理工具(二)-- Easyexcel EasyPoi是一款基于 Apache POI 的高效 Java 工具库,专为简化 Excel 和 Word 文档的操作而设计。以下是对…...
【BUG】已解决:python setup.py bdist_wheel did not run successfully.
已解决:python setup.py bdist_wheel did not run successfully. 目录 已解决:python setup.py bdist_wheel did not run successfully. 【常见模块错误】 解决办法: 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主…...
Java 中如何支持任意格式的压缩和解压缩
👆🏻👆🏻👆🏻关注博主,让你的代码变得更加优雅。 前言 Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率…...
从零开始实现大语言模型(八):Layer Normalization
1. 前言 Layer Normalization是深度学习实践中已经被证明非常有效的一种解决梯度消失或梯度爆炸问题,以提升神经网络训练效率及稳定性的方法。OpenAI的GPT系列大语言模型使用Layer Normalization对多头注意力模块,前馈神经网络模块以及最后的输出层的输入张量做变换,使shap…...
<数据集>混凝土缺陷检测数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:7353张 标注数量(xml文件个数):7353 标注数量(txt文件个数):7353 标注类别数:6 标注类别名称:[exposed reinforcement, rust stain, Crack, Spalling, Efflorescence…...
【LabVIEW作业篇 - 3】:数组相加、for循环创建二位数组、数组练习(求最大最小值、平均值、中位数、提取范围内的数据、排序)
文章目录 数组相加for循环实现直接使用加函数 for循环创建二位数组数组练习 数组相加 要求:用两种方法实现两个数组相加 for循环实现 在前面板中分别创建两个数值类型的一维数组,并设置相应的值,然后在程序框图中创建一个for循环ÿ…...
Unity动画系统(4)
6.3 动画系统高级1-1_哔哩哔哩_bilibili p333- 声音组件添加 using System.Collections; using System.Collections.Generic; using UnityEngine; public class RobotAnimationController : MonoBehaviour { [Header("平滑过渡时间")] [Range(0,3)] publ…...
React基础学习-Day08
React基础学习-Day08 React生命周期(旧)(新)(函数组件) (旧) 在 React 16 版本之前,React 使用了一套不同的生命周期方法。这些生命周期方法在 React 16 中仍然可以使用…...
Flowable的学习一
今日项目用到了Flowable。简单记录下。 学习中 参考了网上资料: 工作流-Activiti7-基础讲解_activity工作流-CSDN博客 https://juejin.cn/post/7158342433615380517 flowable实战(九)flowable数据库表中流程实例、活动实例、任务实例三者…...
django-vue-admin项目运行
文本主要对django-vue-admin项目进行了简要介绍,并且对前后端进行了源码安装和运行。在此基础上可作为管理系统二次开发的基础框架。 一.django-vue-admin简介和安装 1.简介 django-vue-admin项目是基于RBAC模型权限控制的中小型应用的基础开发平台,采…...
4. docker镜像、Dockerfile
docker镜像、Dockerfile 一、docker镜像1、镜像介绍2、镜像核心技术 二、Dockerfile定制镜像1、Dockerfile使用流程1.1 编写Dockerfile1.2、构建镜像1.3 创建容器测试镜像定制操作 2、Dockerfile常用指令 三、部署springcloud微服务架构的商品秒杀项目1、部署项目需要的基础服务…...
智能水果保鲜度检测:基于YOLO和深度学习的完整实现
引言 水果新鲜程度直接影响其口感和营养价值。为了提高水果品质管理的效率和准确性,本文介绍了一种基于深度学习的水果新鲜程度检测系统。该系统包括用户界面,利用YOLO(You Only Look Once)v8/v7/v6/v5模型进行水果新鲜程度检测&…...
C#中implicit 关键字的使用:隐式转换操作符
在 C# 中,implicit 关键字用于定义隐式转换操作符。隐式转换操作符允许自动将一种数据类型转换为另一种类型,而无需显式地调用转换方法或进行类型转换。下面将详细介绍 implicit 关键字的定义和使用。 1. 隐式转换操作符 定义 隐式转换操作符可以定义在一个类或结构体中,…...
asp毕业设计下载(全套源码+配套论文)——基于asp+access的办公系统设计与实现
基于aspaccess的办公系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于aspaccess的办公系统设计与实现,更多精选毕业设计项目实例见文末哦。 文章目录: 基于aspaccess的办公系统设计与实现(毕…...
Qwen3-0.6B-FP8入门必看:6亿参数如何做到≤2GB显存?FP8量化压缩深度解析
Qwen3-0.6B-FP8入门必看:6亿参数如何做到≤2GB显存?FP8量化压缩深度解析 你是不是也遇到过这种情况:想在自己的电脑上跑个大模型试试,结果一看显存要求,动辄十几GB,直接劝退?或者好不容易找到一…...
PCB Layout实战:信号走线绕过ESD/TVS管,为何防护会失效?
1. 信号走线绕过ESD/TVS管的隐患 很多工程师在PCB设计时都听过一个原则:信号走线要先经过ESD/TVS保护器件,再连接到被保护芯片。但在实际项目中,由于空间限制或布线困难,经常会出现信号线先连接到芯片,再绕回保护器件的…...
用Node.js和request-promise玩转EduCoder API:手把手教你搭建自己的实训答案库
用Node.js构建EduCoder实训数据采集系统的工程实践 在编程教育平台EduCoder上,实训关卡的设计往往需要学习者反复尝试和验证。作为开发者,我们能否通过技术手段实现实训数据的自动化采集与管理?本文将深入探讨如何基于Node.js生态构建一个稳定…...
用格子玻尔兹曼方法 - 浸没边界法模拟圆柱绕流(LBM - IBM in C++)
格子玻尔兹曼方法-浸没边界法模拟圆柱绕流 LBM- IBM (C)在计算流体力学(CFD)的领域里,格子玻尔兹曼方法(Lattice Boltzmann Method, LBM)和浸没边界法(Immersed Boundary Method, IB…...
双模型混搭方案:OpenClaw同时接入百川2-13B与Qwen的实操演示
双模型混搭方案:OpenClaw同时接入百川2-13B与Qwen的实操演示 1. 为什么需要多模型混搭? 去年冬天,当我第一次尝试用OpenClaw自动化处理技术文档时,发现一个有趣的现象:同一个模型在不同任务上的表现差异巨大。Qwen在…...
Chatbot Arena排行榜单实战指南:从数据采集到模型优化
Chatbot Arena排行榜单实战指南:从数据采集到模型优化 在构建和优化自己的对话AI时,我们常常面临一个核心问题:如何客观、全面地评估它的性能?闭门造车式的测试往往带有主观偏见,而Chatbot Arena这类公开的排行榜单&a…...
利用快马AI三分钟生成Python哈希表原型,快速验证数据存储方案
今天在做一个数据处理的小项目时,突然需要快速验证一个数据存储方案。想到哈希表这种高效的数据结构正好适合,但自己从头实现又太费时间。正好最近在用InsCode(快马)平台,发现它的AI辅助功能可以快速生成可运行的原型代码,于是尝试…...
2026整家定制一线品牌选购报告:基于物理指标与国标数据的多维交叉验证
针对用户关于“2026年整家定制一线品牌推荐”及“质量好的定制品牌有哪些”的咨询,评估的核心不应仅停留在品牌知名度,而在于能否在结构力学稳定性、材料理化抗性、数字化设计精度及长效履约信用四个维度完成证据链闭环。本文通过检索 金牌家居ÿ…...
ESP32 IDF环境下DHT11温湿度读取避坑指南:从时序图到数据拼接的完整解析
ESP32 IDF环境下DHT11温湿度读取避坑指南:从时序图到数据拼接的完整解析 在物联网设备开发中,温湿度传感器是最基础也最常用的环境感知元件之一。DHT11作为一款低成本、单总线数字输出的温湿度传感器,被广泛应用于各类嵌入式项目中。然而&…...
