You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7:实现多列表循环存入表格的存储过程改造

改造MySQL存储过程以支持多组逗号分隔列表输入并输出多列表格

原存储过程的问题说明

原存储过程存在语法错误且未实现实际数据输出逻辑:

  • CHAR_LENGHT拼写错误,应为CHAR_LENGTH
  • SET ListName = _value语句末尾缺失分号
  • 仅循环处理变量,未将结果输出或写入表中

改造后的存储过程

以下是支持多组列表输入、输出多列多行结果的存储过程代码:

CREATE DEFINER = 'root' PROCEDURE List_values_to_table(_groups TEXT)
BEGIN
    -- 声明变量
    DECLARE _group TEXT DEFAULT NULL;
    DECLARE _group_len INT DEFAULT NULL;
    DECLARE _current_group TEXT DEFAULT NULL;
    
    -- 创建临时表存储结果
    DROP TEMPORARY TABLE IF EXISTS temp_result;
    CREATE TEMPORARY TABLE temp_result (
        col VARCHAR(64),
        col1 VARCHAR(64),
        col2 VARCHAR(64)
    );
    
    -- 清理输入字符串首尾冗余符号
    SET _groups = TRIM(BOTH '() ' FROM _groups);
    
    -- 循环拆分每个组
    group_iterator: LOOP
        IF CHAR_LENGTH(TRIM(_groups)) = 0 OR _groups IS NULL THEN
            LEAVE group_iterator;
        END IF;
        
        -- 提取第一个组
        SET _group = SUBSTRING_INDEX(_groups, '),', 1);
        SET _group_len = CHAR_LENGTH(_group) + 2;
        SET _current_group = TRIM(BOTH '() ' FROM CONCAT('(', _group, ')'));
        
        -- 拆分当前组的逗号分隔值并插入临时表
        INSERT INTO temp_result (col, col1, col2)
        SELECT 
            TRIM(SUBSTRING_INDEX(_current_group, ',', 1)) AS col,
            TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_current_group, ',', 2), ',', -1)) AS col1,
            TRIM(SUBSTRING_INDEX(_current_group, ',', -1)) AS col2;
        
        -- 移除已处理的组
        SET _groups = INSERT(_groups, 1, _group_len, '');
    END LOOP group_iterator;
    
    -- 输出最终结果
    SELECT * FROM temp_result;
    
    -- 清理临时表
    DROP TEMPORARY TABLE IF EXISTS temp_result;
END

调用示例

传入多组列表时,需将所有组包裹为单个字符串参数:

CALL List_values_to_table('(Test,Test1,Test2),(Emp,Emp1,Emp2)');

输出结果

col   col1   col2
----- ------ ------
Test  Test1  Test2
Emp   Emp1   Emp2

逻辑说明

  1. 用临时表存储中间结果,确保输出格式符合要求
  2. 以),为分隔符拆分输入字符串中的每个组
  3. 对每个组拆分逗号分隔的三个值,分别映射到col/col1/col2列
  4. 统一查询临时表输出结果,最后自动清理临时表

内容的提问来源于stack exchange,提问作者manasasai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:25:54