MySQL获取二维数组字符串的最后一个值的实现代码

 更新时间:2024年04月23日 11:12:08   作者:天狼1222  
这篇文章主要介绍了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 xtrabackup 物理备份原理解析

    MySQL xtrabackup 物理备份原理解析

    xtrabackup 是percona公司开源的MySQL innodb物理备份工具,支持在线热备(备份时不影响数据读写),在工具在业内生产上被大量使用,本次使用xtrabackup 备份的日志和数据库general 日志来对备份的流程和原理进行解读,需要的朋友可以参考下
    2022-12-12
  • 详解MySQL单列索引和联合索引

    详解MySQL单列索引和联合索引

    联合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏进行排序,然后按名字对有相同姓氏的人进行排序,这篇文章主要介绍了MySQL单列索引和联合索引,需要的朋友可以参考下
    2022-09-09
  • mysql注入之长字符截断,orderby注入,HTTP分割注入,limit注入方式

    mysql注入之长字符截断,orderby注入,HTTP分割注入,limit注入方式

    这篇文章主要介绍了mysql注入之长字符截断,orderby注入,HTTP分割注入,limit注入方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 解决mysql不能插入中文Incorrect string value

    解决mysql不能插入中文Incorrect string value

    首先我的配置文件的设置的默认字符集是utf8即
    2009-05-05
  • mysql 8.0.16 压缩包安装配置方法图文教程

    mysql 8.0.16 压缩包安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.16 压缩包安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 解决MySQL报错:You can‘t specify target table ‘region‘ for update in FROM clause

    解决MySQL报错:You can‘t specify target table ‘region‘ for 

    这篇文章主要给大家介绍了关于MySQL报错:You can‘t specify target table ‘region‘ for update in FROM clause的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • C++连接使用MySQL的方法

    C++连接使用MySQL的方法

    这篇文章主要为大家详细介绍了C++连接使用MySQL的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • MySQL时间溢出原理、影响与解决方案

    MySQL时间溢出原理、影响与解决方案

    本文将手把手带您了解mysql时间溢出原理、实战影响与全面解决方案,所有代码均通过dblens for mysql数据库工具验证,推荐使用该工具进行可视化数据库管理和开发,感兴趣的小伙伴跟着小编一起来看看吧
    2025-03-03
  • MySQL中的运算符使用实例展示

    MySQL中的运算符使用实例展示

    请问,什么是最好的参考文档,我的答案是:真实可行的样例语句。
    2010-12-12
  • 关于Mysql搭建主从复制功能的步骤实现

    关于Mysql搭建主从复制功能的步骤实现

    这篇文章主要介绍了关于Mysql搭建主从复制功能的步骤实现,在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用主从复制,需要的朋友可以参考下
    2023-05-05

最新评论