如何分割字符串并循环遍历 MySQL 存储过程中的值?


要分割字符串并在 MySQL 存储过程中循环遍历所有值,您不需要使用 REPLACE() 函数。要了解,首先创建一个存储过程,然后创建一个表并使用一些值调用存储过程。该值将被插入到表中。

创建存储过程的查询如下

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 ;

现在创建一个存储存储过程值的表。创建表的查询。

mysql> CREATE TABLE store(
   -> Id int NOT NULL AUTO_INCREMENT,
   -> allValues varchar(30),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.63 sec)

显示表中的所有记录。查询如下

mysql> select *from store;
Empty set (0.00 sec)

最初表中没有记录。让我们使用 CALL 命令调用存储过程。查询如下

mysql> call SP_SplitString('Hi,Hello,Good Morning,Bye');
Query OK, 1 row affected (1.02 sec)

在调用上述存储过程之后,让我们再次检查表记录。从表中显示所有记录的查询如下

mysql> select *from store;

以下是输出

+----+--------------+
| Id | allValues    |
+----+--------------+
|  1 | Hi           |
|  2 | Hello        |
|  3 | Good Morning |
|  4 | Bye          |
+----+--------------+
4 rows in set (0.00 sec)

更新于: 2019 年 7 月 30 日

5K+ 浏览量

开启您的事业

参加课程并获得认证

开始
广告