在mysql中好像并没有提供split的函数,即使有那么该如何接收返回值呢?数组吗.
反正我只能间接的实现,如下:
DELIMITER $$;
DROP FUNCTION IF EXISTS `func_getSplitCount`$$
CREATE FUNCTION `func_getSplitCount`(
f_string varchar(1000),f_delimit varchar(5)
) RETURNS int(11)
BEGIN
return 1+(length(f_string) - length(replace(f_string,f_delimit,'')));
END$$
DELIMITER ;$$
DELIMITER $$;
DROP FUNCTION IF EXISTS `func_getSplitString`$$
CREATE FUNCTION `func_getSplitString`(
f_string varchar(1000),f_delimit varchar(5),f_order int
) RETURNS varchar(255)
BEGIN
declare result varchar(255) default '';
set result = reverse(substring_index(reverse(substring_index(f_string,f_delimit,f_order)),f_delimit,1));
return result;
END$$
DELIMITER ;$$
-- 以下是利用这个split的一个片段
....
set loopCount = func_getSplitCount(orString,splitDelimit);
WHILE(loopCount > 0) DO
set temp_orWhere = concat(temp_orWhere,' or cIdxMapCd = \'',func_getSplitString(orString,splitDelimit,loopCount),'\'');
set loopCount = loopCount - 1;
END WHILE;
....
恩就是这样,至少我没有更好的办法.
利用length函数和replace计算出split的个数,然后利用substring_index和reverse函数取出指定位置的内容,最后利用循环,不断的去拿.