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

MySQL存储过程:实现两种字符串格式转换的函数需求

解决方案:两个MySQL存储函数处理逗号分隔字符串

针对你需要把逗号分隔的数字字符串转换为两种特定格式的需求,我写了两个简单的存储函数,直接就能用:

一、生成a.xxx,a.yyy,...格式的函数

这个函数会给每个数字前缀加上a.,再用逗号连接起来,同时处理了空输入的边界情况。

函数代码

DELIMITER //
CREATE FUNCTION fn_prefix_with_a(input_str VARCHAR(255))
RETURNS VARCHAR(1000)
DETERMINISTIC
BEGIN
    -- 处理空输入或NULL的情况
    IF input_str IS NULL OR input_str = '' THEN
        RETURN '';
    END IF;
    -- 核心逻辑:给每个元素添加a.前缀
    RETURN CONCAT('a.', REPLACE(input_str, ',', ',a.'));
END //
DELIMITER ;

调用示例

SELECT fn_prefix_with_a('111,222,333,444,555');

返回结果:a.111,a.222,a.333,a.444,a.555

如果输入单个数字:

SELECT fn_prefix_with_a('666');

返回结果:a.666

二、生成'xxx','yyy',...格式的函数

这个函数会把每个数字用单引号包裹,再用逗号分隔,同样兼容空输入和单个元素的场景。

函数代码

DELIMITER //
CREATE FUNCTION fn_wrap_with_quotes(input_str VARCHAR(255))
RETURNS VARCHAR(1000)
DETERMINISTIC
BEGIN
    -- 处理空输入或NULL的情况
    IF input_str IS NULL OR input_str = '' THEN
        RETURN '';
    END IF;
    -- 核心逻辑:给每个元素包裹单引号
    RETURN CONCAT('''', REPLACE(input_str, ',', ''','''), '''');
END //
DELIMITER ;

调用示例

SELECT fn_wrap_with_quotes('111,222,333,444,555');

返回结果:'111','222','333','444','555'

单个数字输入的情况:

SELECT fn_wrap_with_quotes('666');

返回结果:'666'


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:01:47