MySQL带固定分隔符字符串中元素的遍历,用于解决MySQL不支持数组的问题

本文介绍了如何在MySQL中处理不支持数组的情况,通过创建GetNum和GetElement函数计算元素数量和获取指定元素,以及编写存储过程实现字符串元素遍历,展示了如何用逗号分隔的字符串模拟数组功能。
摘要由CSDN通过智能技术生成

MySQL带固定分隔符字符串中元素的遍历,用于解决MySQL不支持数组的问题

MySQL不支持数组遍历,我们可以采用带有固定分隔符(一般采用西文的逗号)的字符串存储要遍历的数据。本文编制了2个MySQL函数:GetNum函数可以计算出字符串中的元素个数;GetElement函数可以根据输入参数取出指定的元素。代码如下:

CREATE FUNCTION GetNum(
str varchar(1024),
split varchar(10)
) RETURNS int
begin
declare i int;
declare s varchar(1024);
set i=1;
my_loop:loop
set s=substring_index(str,split,i);
if s=str
then leave my_loop;
end if;
set i=i+1;
end loop my_loop;
return i;
end

CREATE FUNCTION GetElement(
str varchar(1024),
split varchar(10),
i int
) RETURNS varchar(1024)
BEGIN
declare output varchar(1024);
declare s1 varchar(1024);
declare s2 varchar(1024);
set output=substring_index(str,split,i);
if i>1 then
set s1=output;
set s2=substring_index(str,split,i-1);
set output=substring(s1,length(s2)+2,length(s1)-length(s2));
end if;
RETURN output;
END

函数应用举例如下:
select GetNum(‘1,2,3,4,5,6,7,8,9’,‘,’) 结果为9
select GetElement(‘1,2,3,4,5,6,7,8,9’,‘,’,5) 结果为5

下面用一个存储过程实现字符串元素的遍历:

CREATE PROCEDURE myprocedure()
BEGIN
declare str varchar(1024);
declare s varchar(1024);
declare i int;
declare m int;
set str=‘1,2,3,4,5,6,7,8,9’;
set m=GetNum(str,‘,’);
set i=1;
while (i<=m) do
set s=GetElement(str,‘,’,i);
insert into t values(s);
set i=i+1;
end while;
select * from t;
END

注意:需要提前建一个只有一个字符型字段的表t用于存储字符串元素遍历的结果,建表语句略。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值