-- 定义存储过程 DELIMITER $$ CREATE PROCEDURE split_string(IN str TEXT, IN delim CHAR(1)) BEGIN DECLARE x INT; DECLARE blen INT; DECLARE temp_str TEXT; DECLARE element TEXT; SET x = 1; SET blen = LENGTH(str); WHILE x<= blen DO IF NOT SUBSTRING(str,x,1) = delim THEN SET temp_str=CONCAT(temp_str,SUBSTRING(str,x,1)); ELSE SET element=TRIM(temp_str); IF NOT element = '' THEN SELECT element; END IF; SET temp_str=''; END IF; SET x=x+1; END WHILE; SET element=TRIM(temp_str); IF NOT element = '' THEN SELECT element; END IF; END $$ DELIMITER ;
上述代码定义了一个名为split_string的存储过程,它有两个参数:一个是待分割的字符串,另一个是分割符。
在存储过程中,大家首先声明了一些局部变量,如x表示循环计数器,blen表示待分割字符串的长度。然后大家使用while循环对字符串进行分割,当扫描到分割符时,大家将之前的字符串暂存,然后输出该字符串,最后将缓存清空,准备下一次分割。
在存储过程中使用SELECT语句输出分割结果,需要注意的是,大家需要在调用存储过程时使用CALL语句,并将分割结果存入变量中。
-- 调用存储过程 SET @str = 'A,B,C,D'; CALL split_string(@str,',');
上述代码定义了一个变量@str,作为待分割字符串的输入,并调用split_string存储过程。执行完成后,大家可以使用SELECT语句显示存储过程输出的结果。
以上就是MySQL存储过程分割字符串的实现方法。如果您在实际应用中遇到了问题,可以参考上述代码进行优化。