myql 获取二维数组字符串的最后一个值

news/2025/3/26 16:40:00/

         继续《mysql 存储过程和函数》的实战:

        要分离字符串:[["1","1007","1007012"],["5","5005"],["6","6002","6002005"],["7","7003"],["8","8001","8001005"]],获取里面各数组里面的最后一个值,即1007012,5005,6002005,7003和8001005

1,内容替换

        先把内容替换了,把双引号和替换为空的,再把中间中括号替换为指定字符

替换后的:

sql"> 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获取到数组的最后一个值。

分离函数:

sql">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 THENSET 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 ; 

使用:

sql">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 触发器》


http://www.ppmy.cn/news/1434600.html

相关文章

零基础入门学习Python第一阶10图形用户界面和游戏开发

图形用户界面和游戏开发 基于tkinter模块的GUI GUI是图形用户界面的缩写&#xff0c;图形化的用户界面对使用过计算机的人来说应该都不陌生&#xff0c;在此也无需进行赘述。Python默认的GUI开发模块是tkinter&#xff08;在Python 3以前的版本中名为Tkinter&#xff09;&…

Python-VBA函数之旅-getattr函数

目录 一、getattr函数的常见应用场景&#xff1a; 二、getattr函数使用注意事项&#xff1a; 1、getattr函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.21…

Linux进程详解三:进程状态

文章目录 进程状态Linux下的进程状态运行态-R阻塞态浅度休眠-S深度睡眠-D暂停状态-T暂停状态-t 终止态僵尸-Z死亡-X 孤儿进程 进程状态 进程的状态&#xff0c;本质上就是一个整型变量&#xff0c;在task_struct中的一个整型变量。 状态的存在决定了你的后续行为动作。 Linu…

【Linux】日志分析与管理

作为一个运维&#xff0c;如果不会看日志&#xff0c;就好比是冬天刚刚用热水泡完了脚&#xff0c;接着就立马让人把水喝掉。 目录 一、Inode介绍 1.1 什么是inode 1.2 inode表内容 1.3 查看inode号的方式 二、日志分析 2.1 日志的用途 2.2 日志的分类 2.3 日志级别 2…

maya显示隐藏 动画长度

目录 大纲视图&#xff0c;选择节点&#xff0c;H控制显示与隐藏 使用Viewport显示/隐藏 脚本控制显示/隐藏 获取动画长度python脚本 大纲视图&#xff0c;选择节点&#xff0c;H控制显示与隐藏 使用Viewport显示/隐藏 这是最直观的方法&#xff0c;适合临时隐藏Mesh以便专…

EelasticSearch的docker安装-----》es客户端使用!!!

1.Docker安装 docker run -d --name es7 -e ES_JAVA_POTS"-Xms256m -Xmx256m" -e "discovery.typesingle-node" -v /opt/es7/data/:/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 elasticsearch:7.14.02.客户端UI工具&#xff0c;Edge浏览器…

北航计算机软件技术基础课程作业笔记【4】

题目&#xff08;好像以前没加&#xff09; 二叉树与哈希表 作业 1.二叉树前序遍历结果 二叉树结构为 代码实现中序后序推理前序表达式 #include <iostream> #include <stack> #include <string> #include <vector> #include <deque> ​ // …

Laravel 6 - 第十五章 验证器

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …