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;
|