请教mysql高人:如何将下面地址中的存储过程sp_print_result改写成自定义函数呢?

请教mysql高人:如何将下面地址中的存储过程sp_print_result改写成自定义函数呢?以便对数据表中的字段(由逗号分隔)进行批处理。

存储过程sp_print_result代码地址:

https://www.jb51.net/article/158443.htm


我试着改写了一下,运行不出结果:

DELIMITER $$

DROP FUNCTION IF EXISTS `func_print_result_x` $$ 

CREATE FUNCTION `func_print_result_x`(

 f_string varchar(1000),f_delimiter varchar(5)

) RETURNS varchar(2550) CHARSET utf8

BEGIN

declare c varchar(2550);

 -- Get the separated string.

 declare cnt int default 0;

 declare i int default 0;

 set cnt = func_get_split_string_total(f_string,f_delimiter);

 -- 手工创建一个物理表

 -- create table tmp_print (num VARCHAR(255) not null);

 -- 清空物理表

 delete from tmp_print;

 while i < cnt

 do

  set i = i + 1;

  insert into tmp_print(num) values (func_get_split_string(f_string,f_delimiter,i));

 end while;

 select GROUP_CONCAT(distinct num order by num separator ",") from tmp_print;

 return c;

END$$

DELIMITER ;



-- 测试运行结果为空:

select func_print_result_x("aaa,123,12,234,123,123",",");



alu 发布于 2019-12-23 15:12 (编辑于 2019-12-23 15:13)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
5
snrtuemcLv8专家互助
发布于2020-6-12 20:37

你要按照教程,执行三次自定义函数,不能拼接在一起执行,完全按教程是可以的,我本地测试可以的

  • 2关注人数
  • 443浏览人数
  • 最后回答于:2020-6-12 20:37
    请选择关闭问题的原因
    确定 取消
    返回顶部