MySQL 存储过程实现字符串 Split 分割方法

纸上星河
纸上星河
发布时间:2026-10-14 | 1人浏览过
原创

在 MySQL 中原生缺乏直接可用的数组或字符串分割函数,通过编写带有循环逻辑的存储过程可以灵活地拆分字符串。本方案利用临时表作为中间载体,完整实现了按指定分隔符提取子串并落库的操作。

执行效果预览

调用定义的存储过程后,系统会自动将输入字符串按照分隔符拆分为多行数据存入临时表 splittable。以下为典型的调用及查询输出:

call PROCEDURE_split('分享,代码,片段', ',');
select * from splittable;

核心操作步骤

第 1 步:删除旧有定义与准备环境

目的:确保脚本可重复执行,避免因重名导致报错。

操作:执行清理语句,如果存在名为 procedure_split 的过程则将其移除:

drop PROCEDURE if exists procedure_split;

第 2 步:创建存储过程主体

目的:初始化变量及中间表,为字符遍历做准备。

入口:进入 SQL 编辑器或命令行。

动作:定义参数并建立逻辑框架。其中声明了总长度 strlen、游标位置 cur_index 等关键变量,并清理/创建一个内存级别的临时表 splittable 用于暂存分割结果。表结构仅含一个 value VARCHAR(20) 字段:

CREATE PROCEDURE `procedure_split`(
   inputstring varchar(1000),
   delim char(1)
) begin
   declare strlen int DEFAULT length(inputstring);
   declare last_index int DEFAULT 0;
   declare cur_index int DEFAULT 1;
   declare cur_char VARCHAR(200);
   declare len int;
   drop temporary table if exists splittable;
   create TEMPORARY table splittable(
       value VARCHAR(20)
   ) ;

第 3 步:配置循环截取逻辑

目的:逐个扫描字符并在遇到分隔符时将当前段插入临时表。

重要参数:delim(分隔符)。此处硬编码假设分隔符为单字节字符。

动作:构建 WHILE 循环遍历整串。当发现当前字符等于分隔符且达到末尾时,计算该段落长度 len,并将子串 substring 插入表中:

   WHILE(cur_index<=strlen) DO   
   begin
      if substring(inputstring from cur_index for 1)=delim or cur_index=strlen then
         set len=cur_index-last_index-1;
         if cur_index=strlen then
            set len=len+1;
         end if;
         insert into splittable(`value`)values(substring(inputstring from (last_index+1) for len));
         set last_index=cur_index;
      end if;
      set cur_index=cur_index+1;
   END;
   end while;
end ;

完成判断

运行存储过程后,通过 SELECT * FROM splittable; 确认行数是否符合预期,即是否有对应的数据被准确切分录入。

简要总结

以上就是 MySQL 存储过程实现 split 的详细内容,更多关于 MySQL 基础用法及存储过程编写的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表