mysql 利用sql解析数组

1、创建存储过程

delimiter //
CREATE PROCEDURE `substring`(IN `array` varchar(255),IN `num` int(10),OUT `string` varchar(255))
BEGIN
-- 裁剪数组为想要的元素在第一位(num 从 0 开始为第一个元素)
	set @startCount = -(length(`array`) - length(REPLACE(`array`, ',', '')) + 1);
	SET @startList = SUBSTRING_INDEX( `array`, ',', @startCount + `num` );
-- 获取该下标下的字符串
	set `string` = trim(SUBSTRING_INDEX( @startList, ',', '1' ));
END //

2、测试存储过程

call `substring`('2022-04-21, 2022-04-22',1,@s);
select @s;

3、具体操作 (函数)

DECLARE i INT DEFAULT 0;
-- 分隔符数=总元素个数-1
SET @total =(
SELECT
	length( leave_start_date ) - length(
	REPLACE ( leave_start_date, ',', '' )) 
FROM
	test 
);
-- 数组
SET @startArray =(
		SELECT REPLACE
			( REPLACE ( leave_start_date, '[', '' ), ']', '' ) 
		FROM
			test 
		);

WHILE
	i <= @total DO
	
	-- 裁剪出具体元素,类似 java array.get(int index) 此存储过程 index是从 0 开始,序号 0 为第一个元素 方法
	call `substring`(@startArray ,i,@s);

	自己的业务逻辑	

	SET i = i + 1;
	
END WHILE;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值