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

ใช้ MySQL REPLACE() แทนที่ String ในหลาย Record พร้อมกัน

REPLACE(column, 'old_string', 'new_string') แทนที่ Substring ทุกที่ที่เจอใน Column

สร้างตารางและข้อมูล

mysql> CREATE TABLE replaceDemo (Name VARCHAR(200));
mysql> INSERT INTO replaceDemo VALUES ('John'), ('Demo'), ('Smith'), ('Demo'), ('Carol');

ข้อมูลก่อน:

+-------+
| Name  |
+-------+
| John  |
| Demo  |
| Smith |
| Demo  |
| Carol |
+-------+

Replace 'Demo' → 'Amit'

mysql> UPDATE replaceDemo 
    -> SET Name = REPLACE(Name, 'Demo', 'Amit') 
    -> WHERE Name LIKE 'Demo';
Query OK, 2 rows affected (0.18 sec)

ข้อมูลหลัง:

+-------+
| Name  |
+-------+
| John  |
| Amit  |
| Smith |
| Amit  |
| Carol |
+-------+

คุณสมบัติ REPLACE()

  • Case-sensitive (ขึ้นกับ Collation)
  • แทนที่ ทุก Occurrence ใน String (ไม่ใช่แค่ครั้งแรก)
  • คืนค่า String ใหม่ (ไม่ Modify In-place ต้อง UPDATE)
  • REPLACE('abcabc', 'ab', 'X') → 'XcXc'

ใช้กับ SELECT (ไม่เปลี่ยนข้อมูล)

SELECT Name, REPLACE(Name, 'Demo', 'Amit') AS NewName FROM replaceDemo;
Performance: REPLACE() ทำ Full Table Scan หากไม่มี Index บน Column ที่ WHERE ควรเพิ่ม WHERE Column LIKE '%old_string%' เพื่อลด Row ที่ Scan (แม้จะยังไม่ใช้ Index)