目的是把一个"aaa|bbb|ccc"这咱串分割成aaa, bbb, ccc三个串,我的入参比较固定实现所以只简单实现了就完了。以为为分割函数
DELIMITER $$
USE `cloudac_release`$$
DROP FUNCTION IF EXISTS `f_sqlit`$$
CREATE DEFINER=`cloudac`@`%` FUNCTION `f_sqlit`(f_string VARCHAR(1000),f_delimiter VARCHAR(5), number INT(10)) RETURNS VARCHAR(64)
BEGIN
DECLARE temp VARCHAR(64);
IF (number < 1 || number >3) THEN
RETURN NULL;
END IF;
IF (number = 1) THEN
RETURN SUBSTRING_INDEX(f_string,f_delimiter,1);
END IF;
IF (number = 3) THEN
RETURN SUBSTRING_INDEX(f_string,f_delimiter,-1);
END IF;
SET temp = SUBSTRING_INDEX(f_string,f_delimiter,-2);
RETURN SUBSTRING_INDEX(temp,f_delimiter,1);
END$$
DELIMITER ;
调用过程
SELECT f_sqlit('asdf|1|123', '|', 3);
返回第三个值123
SELECT f_sqlit('asdf|1|123', '|', 2);
返回第二个值1