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

แยกสตริงและวนซ้ำค่าในขั้นตอน MySQL หรือไม่


หากต้องการแยกสตริงและวนซ้ำค่าทั้งหมดในโพรซีเดอร์ MySQL คุณไม่จำเป็นต้องใช้ฟังก์ชัน REPLACE() เพื่อให้เข้าใจ ขั้นแรกให้สร้างกระบวนงานที่เก็บไว้ จากนั้นจึงสร้างตารางและเรียกกระบวนงานที่เก็บไว้ด้วยค่าบางอย่าง ค่าจะถูกแทรกลงในตาราง

แบบสอบถามเพื่อสร้างกระบวนงานที่เก็บไว้มีดังนี้:

mysql> DELIMITER //mysql> CREATE PROCEDURE SP_SplitString (Value longtext) -> BEGIN -> DECLARE front TEXT DEFAULT NULL; -> ประกาศ INT DEFAULT NULL ฟรอนต์เลน; -> ประกาศ TempValue TEXT DEFAULT NULL; -> iterator:-> LOOP -> IF LENGTH(TRIM(Value)) =0 หรือ Value IS NULL THEN -> ปล่อยให้ตัววนซ้ำ; -> สิ้นสุดถ้า; -> SET front =SUBSTRING_INDEX(ค่า,',',1); -> SET frontlen =LENGTH (ด้านหน้า); -> SET TempValue =TRIM (ด้านหน้า); -> INSERT INTO เก็บ (allValues) ค่า (TempValue); -> ค่า SET =INSERT(Value,1,frontlen + 1,''); -> สิ้นสุดวง; -> END // แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.22 วินาที) mysql> DELIMITER;

ตอนนี้สร้างตารางที่เก็บค่าของกระบวนงานที่เก็บไว้ แบบสอบถามเพื่อสร้างตาราง

mysql> CREATE TABLE store ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> allValues ​​varchar(30), -> คีย์หลัก (Id) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.63 วินาที)

แสดงระเบียนทั้งหมดจากตาราง แบบสอบถามมีดังนี้:

mysql> เลือก *จากร้านค้า ชุดว่าง (0.00 วินาที)

เริ่มแรกเราไม่มีระเบียนใด ๆ ในตาราง ให้เราเรียกกระบวนงานที่เก็บไว้โดยใช้คำสั่ง CALL แบบสอบถามมีดังนี้:

mysql> โทร SP_SplitString('Hi,Hello,Good Morning,Bye');Query OK, 1 แถวได้รับผลกระทบ (1.02 วินาที)

หลังจากเรียกขั้นตอนการจัดเก็บข้างต้น ให้เราตรวจสอบระเบียนตารางอีกครั้ง แบบสอบถามเพื่อแสดงระเบียนทั้งหมดจากตารางมีดังนี้:

mysql> เลือก *จากร้านค้า

ต่อไปนี้เป็นผลลัพธ์:

<ก่อนหน้า>+----+--------------+| รหัส | allValues ​​|+----+------------+| 1 | สวัสดี || 2 | สวัสดี || 3 | สวัสดีตอนเช้า || 4 | ลาก่อน |+----+-------------+4 แถวในชุด (0.00 วินาที)