Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แยกสตริงและวนลูปใน MySQL Stored Procedure


เพื่อแยกสตริงและวนลูปค่าทั้งหมดใน MySQL Procedure ไม่ต้องใช้ REPLACE() สร้าง Stored Procedure แล้วสร้างตารางเก็บค่า และเรียก Procedure พร้อมส่งค่าเข้าไป

สร้าง Stored Procedure

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)

เรียก Stored Procedure พร้อมสตริงคั่นด้วยคอมม่า:

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

ตรวจสอบตาราง store:

mysql> SELECT * FROM store;

ผลลัพธ์:

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

Procedure จะแยกสตริงด้วยคอมม่า วนลูป INSERT แต่ละส่วนเข้าตาราง จนกว่าสตริงจะหมด