MySQL获取二维数组字符串的最后一个值的实现代码
要分离字符串:[["1","1007","1007012"],["5","5005"],["6","6002","6002005"],["7","7003"],["8","8001","8001005"]],获取里面各数组里面的最后一个值,即1007012,5005,6002005,7003和8001005
1,内容替换
先把内容替换了,把双引号和替换为空的,再把中间中括号替换为指定字符
替换后的:
SELECT REPLACE ( REPLACE ( REPLACE (REPLACE ( s.gdbq, '],[', '@' ), '[', '' ), ']', '' ), '"', '' ) replace_gdbq FROM ( SELECT '[["1","1007","1007012"],["5","5005"], ["6","6002","6002005"],["7","7003"],["8","8001","8001005"]]' AS gdbq ) AS s
2,写函数处理
利用LOCATE找到位置,再用SUBSTRING分离字符串,再用SUBSTRING_INDEX获取到数组的最后一个值。
分离函数:
DROP FUNCTION IF EXISTS func_split_arr_last_index;
DELIMITER //
CREATE FUNCTION func_split_arr_last_index(inputString VARCHAR(1024), delimiterChar VARCHAR(10))
RETURNS VARCHAR(1024)
BEGIN
-- 分割后的子字符串
DECLARE splitStr VARCHAR(255);
-- 再分割后的子字符串数组最后一个值
DECLARE lastIndexStr VARCHAR(255);
-- 分割后的结果
DECLARE outputResult VARCHAR(255) DEFAULT '';
-- 分割后的子字符串的位置
DECLARE currentPos INT DEFAULT 1;
-- 分割字符的位置
DECLARE delimiterPos INT;
-- 分割字符的大小
DECLARE delimiterLength INT;
SET delimiterLength = LENGTH(delimiterChar);
-- 循环查找分割字符
WHILE currentPos <= LENGTH(inputString) DO
-- 查找分割字符的位置
SET delimiterPos = LOCATE(delimiterChar, inputString, currentPos);
-- 如果找到分割字符,则截取子字符串
IF delimiterPos > 0 THEN
SET splitStr = SUBSTRING(inputString, currentPos, delimiterPos - currentPos);
-- 找出最后一个值
SET lastIndexStr = SUBSTRING_INDEX(splitStr, ',', -1);
-- 将子字符串最后一个值添加到结果中
SET outputResult = CONCAT(outputResult, lastIndexStr, ',');
-- 更新索引
SET currentPos = delimiterPos + delimiterLength;
ELSE
-- 如果没有找到分割字符,则将剩余的字符串添加到结果中
SET splitStr = SUBSTRING(inputString, currentPos);
-- 找出最后一个值
SET lastIndexStr = SUBSTRING_INDEX(splitStr, ',', -1);
SET outputResult = CONCAT(outputResult, lastIndexStr);
-- 退出循环
SET currentPos = LENGTH(inputString) + 1;
END IF;
END WHILE;
-- 返回分割后的结果
RETURN outputResult;
END //
DELIMITER ; 使用:
SELECT func_split_arr_last_index(replace_gdbq, '@') FROM ( SELECT REPLACE ( REPLACE ( REPLACE (REPLACE ( s.gdbq, '], [', '@' ),'[', '' ), ']', '' ), '"', '' ) replace_gdbq FROM ( SELECT '[["1","1007","1007012"],["5","5005"], ["6","6002","6002005"],["7","7003"],["8","8001","8001005"]]' AS gdbq ) AS s ) AS t;

这样分离数据的就目标达成了,就可以进行下一步操作了。
总结
分离字符串,必须得用到LOCATE(找到位置)和SUBSTRING(分离字符串),有考虑直接用replace进行替换,但是这个可能会出现误差,导致问题,就不推荐使用。 对于一位数组的位置,如果是固定长度的就还好指定位置,不然只有第一个和最后一个位置是确定的。
以上就是MySQL获取二维数组字符串的最后一个值的实现代码的详细内容,更多关于MySQL获取字符串最后一个值的资料请关注脚本之家其它相关文章!
相关文章
mysql 5.7.17 winx64免安装版配置方法图文教程
这篇文章主要为大家详细介绍了mysql 5.7.17 winx64免安装版配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-01-01
MySQL中Binary Log二进制日志文件的基本操作命令小结
这篇文章主要介绍了MySQL中Binary Log二进制日志文件的基本操作小结,包括利用二进制日志恢复数据的方法,需要的朋友可以参考下2015-12-12
MySQL LOAD DATA与INSERT导入大批量数据示例代码
MySQL LOAD DATA是一个用于快速从文件中批量导入数据到表中的命令,这篇文章主要介绍了MySQL LOAD DATA与INSERT导入大批量数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下2025-09-09
windows 64位下MySQL 8.0.15安装教程图文详解
本文通过图文并茂的形式给大家介绍了MySQL 8.0.15安装教程(windows 64位),非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2019-04-04


最新评论