在 MySQL 过程中拆分字符串并循环遍历值?

mysqlmysqli database

要在 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)

相关文章