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)