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

วิธีลบช่องว่างซ้ำ (Double Spaces) ในสตริง MySQL

สร้าง Function แบบกำหนดเอง (Stored Function) ใช้ WHILE ลูป REPLACE() จนกว่าจะไม่มีช่องว่างซ้ำ

ไวยากรณ์สร้าง Function

DELIMITER //
CREATE FUNCTION yourFunctionName(param VARCHAR(200)) RETURNS VARCHAR(200)
BEGIN
  SET param = TRIM(param);
  WHILE INSTR(param, '  ') > 0 DO
    SET param = REPLACE(param, '  ', ' ');
  END WHILE;
  RETURN param;
END //
DELIMITER ;

ตัวอย่างสร้าง Function function_DeleteSpaces

mysql> DELIMITER //
mysql> CREATE FUNCTION function_DeleteSpaces(value VARCHAR(200)) RETURNS VARCHAR(200)
    -> BEGIN
    ->   SET value = TRIM(value);
    ->   WHILE INSTR(value, '  ') > 0 DO
    ->     SET value = REPLACE(value, '  ', ' ');
    ->   END WHILE;
    ->   RETURN value;
    -> END //
Query OK, 0 rows affected (0.20 sec)
mysql> DELIMITER ;

ทดสอบ Function

mysql> SELECT function_DeleteSpaces('  John   Smith  ');
+--------------------------------------------------+
| function_DeleteSpaces('  John   Smith  ')        |
+--------------------------------------------------+
| John Smith                                       |
+--------------------------------------------------+

ทดสอบอีกตัวอย่าง

mysql> SELECT function_DeleteSpaces('  John  Smith  123  ');
+---------------------------------------------------------+
| function_DeleteSpaces('  John  Smith  123  ')           |
+---------------------------------------------------------+
| John Smith 123                                          |
+---------------------------------------------------------+

คำอธิบาย: TRIM() ตัดช่องว่างหน้า/หลัง, WHILE ลูป REPLACE(' ', ' ') จนไม่มีช่องว่าง 2 ช่องติดกัน

หมายเหตุ: MySQL 8.0+ มี REGEXP_REPLACE() ทำได้ง่ายกว่า: REGEXP_REPLACE(str, ' {2,}', ' ')