ใช้ฟังก์ชัน REPLACE() ร่วมกับ WHERE เพื่อแทนที่เฉพาะแถวที่ต้องการ
ไวยากรณ์
UPDATE yourTableName SET yourColumnName = REPLACE(yourColumnName, 'yourExistingValue', 'yourNewValue') WHERE yourCondition;
สร้างตารางตัวอย่าง
mysql> create table findAndReplaceDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentFirstName varchar(20)
-> );
Query OK, 0 rows affected (0.49 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Carol');
mysql> insert into findAndReplaceDemo(StudentFirstName) values('David');
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Bob');
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Sam');
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Mike');
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Maxwell');
แสดงข้อมูลก่อน
mysql> select * from findAndReplaceDemo;
ผลลัพธ์:
+----+------------------+ | Id | StudentFirstName | +----+------------------+ | 1 | Carol | | 2 | David | | 3 | Bob | | 4 | Sam | | 5 | Mike | | 6 | Maxwell | +----+------------------+
แทนที่ 'Maxwell' เป็น 'Chris' เฉพาะแถวที่มีค่า 'Maxwell'
mysql> UPDATE findAndReplaceDemo
-> SET StudentFirstName = REPLACE(StudentFirstName, 'Maxwell', 'Chris')
-> WHERE StudentFirstName = 'Maxwell';
Query OK, 1 row affected (0.16 sec)
ตรวจสอบหลังแทนที่
mysql> select * from findAndReplaceDemo;
ผลลัพธ์:
+----+------------------+ | Id | StudentFirstName | +----+------------------+ | 1 | Carol | | 2 | David | | 3 | Bob | | 4 | Sam | | 5 | Mike | | 6 | Chris | +----+------------------+
คำอธิบาย REPLACE()
REPLACE(str, from_str, to_str)แทนที่ ทุกครั้ง ที่พบfrom_strในstr- ในตัวอย่าง ใช้ WHERE จำกัดเฉพาะแถวที่มีค่า 'Maxwell' เท่านั้น
- ถ้าไม่ใส่ WHERE จะแทนที่ในทุกแถวที่มีคำว่า 'Maxwell' ปนอยู่
กรณีแทนที่หลายค่าพร้อมกัน
UPDATE table_name
SET col = REPLACE(REPLACE(col, 'old1', 'new1'), 'old2', 'new2')
WHERE col IN ('old1', 'old2');