妈蛋的,在网上搜的,是用sqlserver写的,害我一个菜鸟一点点改,真的一个头都大了。公司要求把oracle sql转换成mysql,可是mysql没有oracle自定义数组,所以也不能循环算长度,也不能按照索引查数据,所以只能在公司oracle基础上自己改,可坑…
里面的函数大家网上搜搜就知道了,,,,
drop FUNCTION if EXISTS Get_StrArrayLength;
CREATE function Get_StrArrayLength(str varchar(1024), split varchar(10))
RETURNS int
begin
declare location int; --位置
declare start int; --开始位置
declare length int ; --长度
set @str=LTRIM(RTRIM(str)); --去空格函数
set @split = split;
set @location = INSTR(@str,split); --查子字符串第一次出现目标字符串的位置(就是‘,’第一个出现的位置)
set @length=1;
WHILE @location <> 0
DO
SET @start =@location+1;
SET @location = LOCATE(split,str,@start); --查子字符串出现目标字符串的位置(就是‘,’出现的位置) @start是从哪个索引值开始
--ps:两个函数,傻了吧
SET @length = @length +1;
END while;
RETURN @length;
end;
SELECT Get_StrArrayLength('1,2,3,4,5,6',',')