การแทนที่ข้อความในคอลัมน์ด้วยฟังก์ชัน REPLACE()
ฟังก์ชัน REPLACE() ใน MySQL ใช้สำหรับค้นหาและแทนที่สตริงย่อยภายในคอลัมน์ โดยไม่ต้องดึงข้อมูลออกมาประมวลผลภายนอก เหมาะสำหรับการแก้ไข URL, เส้นทางไฟล์, หรือข้อความที่มีรูปแบบคงที่
ไวยากรณ์ (Syntax)
UPDATE yourTableName
SET yourColumnName = REPLACE(yourColumnName, 'yourOldValue', 'yourNewValue');
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล:
mysql> CREATE TABLE replacePartOfStringDemo (
-> WebsiteURL VARCHAR(100)
-> );
Query OK, 0 rows affected (0.47 sec)
mysql> INSERT INTO replacePartOfStringDemo(WebsiteURL) VALUES('www.mysqlQuestion.com');
Query OK, 1 row affected (0.14 sec)
ข้อมูลก่อนเปลี่ยนแปลง:
mysql> SELECT * FROM replacePartOfStringDemo;
+-----------------------+
| WebsiteURL |
+-----------------------+
| www.mysqlQuestion.com |
+-----------------------+
1 row in set (0.00 sec)
แทนที่ 'www.mysqlQuestion.com' ด้วย 'www.mysql.com':
mysql> UPDATE replacePartOfStringDemo
-> SET WebsiteURL = REPLACE(WebsiteURL, 'www.mysqlQuestion.com', 'www.mysql.com');
Query OK, 1 row affected (0.20 sec)
Rows matched: 1 Changed: 1 Warnings: 0
ตรวจสอบผลลัพธ์:
mysql> SELECT * FROM replacePartOfStringDemo;
+---------------+
| WebsiteURL |
+---------------+
| www.mysql.com |
+---------------+
1 row in set (0.00 sec)
คำอธิบายและข้อควรระวัง
REPLACE()แทนที่ ทุกครั้งที่พบ สตริงเก่าในคอลัมน์นั้น- การเปรียบเทียบเป็น Case-sensitive ตาม Collation ของตาราง
- ควรทดสอบด้วย
SELECT REPLACE(column, 'old', 'new') FROM tableก่อนรัน UPDATE จริง - หากต้องการแทนที่เฉพาะบางแถว ให้เพิ่มเงื่อนไข
WHERE
ตัวอย่างเพิ่มเงื่อนไข: UPDATE table SET col = REPLACE(col, 'a', 'b') WHERE id > 100;