You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SUBSTRING_INDEX函数提取字符串中的第2个独立值

提取字符串中第二个值的实用方法

嘿,我来帮你搞定这个问题!要从你的变量@startEndTimeCapacity里提取第二个值'08:00:00',这里有两种适合MySQL场景的实用方案:

方法1:嵌套使用SUBSTRING_INDEX(最直接高效)

这是处理分隔字符串的经典操作,通过两次调用SUBSTRING_INDEX精准定位目标值:

SET @startEndTimeCapacity = "'00:00:00', '08:00:00', 120";
SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(@startEndTimeCapacity, ",", 2), ",", -1));

操作解析:

  1. 第一次SUBSTRING_INDEX(@startEndTimeCapacity, ",", 2):提取逗号分隔的前2个片段,得到结果'00:00:00', '08:00:00'
  2. 第二次SUBSTRING_INDEX(..., ",", -1):从上述结果的右侧反向提取最后1个片段,得到带前导空格的'08:00:00'
  3. TRIM():自动去除结果中的多余空格,确保最终值干净整洁

方法2:利用JSON函数(更直观,适合MySQL 5.7+)

如果你的MySQL版本支持JSON操作,可以把字符串转换为JSON数组,通过索引提取目标值,可读性更强:

SET @startEndTimeCapacity = "'00:00:00', '08:00:00', 120";
-- 将原字符串转换为合法的JSON数组格式
SET @jsonArray = CONCAT("[", REPLACE(@startEndTimeCapacity, "'", '"'), "]");
-- 提取数组中索引为1的元素(JSON数组索引从0开始)
SELECT JSON_UNQUOTE(JSON_EXTRACT(@jsonArray, '$[1]'));

操作解析:

  1. REPLACE(@startEndTimeCapacity, "'", '"'):把原字符串的单引号替换为双引号,符合JSON格式要求
  2. CONCAT("[", ..., "]"):给字符串加上中括号,转换成标准JSON数组
  3. JSON_EXTRACT(@jsonArray, '$[1]'):提取数组的第二个元素(索引1),结果带双引号
  4. JSON_UNQUOTE():去掉结果的双引号,得到纯文本值08:00:00

两种方法都能完美得到你想要的'08:00:00',可以根据你的MySQL版本和个人习惯选择~

内容的提问来源于stack exchange,提问作者one-hand-octopus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 18:59:05