Để tách chuỗi và lặp qua các giá trị trong procedure, không cần REPLACE(). Tạo procedure, tạo bảng, gọi procedure với chuỗi phân cách bằng dấu phẩy.
Tạo stored procedure SP_SplitString:
mysql> DELIMITER // mysql> CREATE PROCEDURE SP_SplitString(Value longtext) -> BEGIN -> DECLARE front TEXT DEFAULT NULL; -> DECLARE frontlen INT DEFAULT NULL; -> DECLARE TempValue TEXT DEFAULT NULL; -> iterator: -> LOOP -> IF LENGTH(TRIM(Value)) = 0 OR Value IS NULL THEN -> LEAVE iterator; -> END IF; -> SET front = SUBSTRING_INDEX(Value,',',1); -> SET frontlen = LENGTH(front); -> SET TempValue = TRIM(front); -> INSERT INTO store (allValues) VALUES (TempValue); -> SET Value = INSERT(Value,1,frontlen + 1,''); -> END LOOP; -> END // Query OK, 0 rows affected (0.22 sec) mysql> DELIMITER ;
Tạo bảng store:
mysql> CREATE TABLE store( -> Id int NOT NULL AUTO_INCREMENT, -> allValues varchar(30), -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.63 sec)
Gọi procedure:
mysql> call SP_SplitString('Hi,Hello,Good Morning,Bye'); Query OK, 1 row affected (1.02 sec)Kết quả bảng store:
mysql> select *from store;
+----+--------------+ | Id | allValues | +----+--------------+ | 1 | Hi | | 2 | Hello | | 3 | Good Morning | | 4 | Bye | +----+--------------+ 4 rows in set (0.00 sec)