如何使用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));
操作解析:
- 第一次
SUBSTRING_INDEX(@startEndTimeCapacity, ",", 2):提取逗号分隔的前2个片段,得到结果'00:00:00', '08:00:00' - 第二次
SUBSTRING_INDEX(..., ",", -1):从上述结果的右侧反向提取最后1个片段,得到带前导空格的'08:00:00' 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]'));
操作解析:
REPLACE(@startEndTimeCapacity, "'", '"'):把原字符串的单引号替换为双引号,符合JSON格式要求CONCAT("[", ..., "]"):给字符串加上中括号,转换成标准JSON数组JSON_EXTRACT(@jsonArray, '$[1]'):提取数组的第二个元素(索引1),结果带双引号JSON_UNQUOTE():去掉结果的双引号,得到纯文本值08:00:00
两种方法都能完美得到你想要的'08:00:00',可以根据你的MySQL版本和个人习惯选择~
内容的提问来源于stack exchange,提问作者one-hand-octopus
相关产品推荐
相关产品推荐

