ใช้ UPDATE ... SET column = REPLACE(column, old_value, new_value) เพื่อแทนที่ค่าเฉพาะในคอลัมน์ทั้งตาราง
รูปแบบคำสั่ง (Syntax)
UPDATE yourTableName SET yourColumnName = REPLACE(yourColumnName, yourOldValue, yourNewValue);
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
FirstName varchar(100),
CountryName varchar(100) );
Query OK, 0 rows affected (0.69 sec)
เพิ่มข้อมูลประเทศ AUS และ US
mysql> insert into DemoTable values('John','AUS');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Bob','AUS');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Chris','US');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('David','UK');
Query OK, 1 row affected (0.43 sec)
mysql> insert into DemoTable values('Adam','US');
Query OK, 1 row affected (0.09 sec)
แสดงข้อมูลก่อนแทนที่
mysql> select * from DemoTable;
+-----------+-------------+ | FirstName | CountryName | +-----------+-------------+ | John | AUS | | Bob | AUS | | Chris | US | | David | UK | | Adam | US | +-----------+-------------+ 5 rows in set (0.00 sec)
คำสั่ง UPDATE แทนที่ AUS -> US
mysql> update DemoTable set CountryName = replace(CountryName, 'AUS', 'US'); Query OK, 2 rows affected (0.17 sec) Rows matched: 5 Changed: 2 Warnings: 0
ตรวจสอบข้อมูลหลังแทนที่ (AUS กลายเป็น US ทั้งหมด)
mysql> select * from DemoTable;
+-----------+-------------+ | FirstName | CountryName | +-----------+-------------+ | John | US | | Bob | US | | Chris | US | | David | UK | | Adam | US | +-----------+-------------+ 5 rows in set (0.00 sec)
คำอธิบาย: REPLACE จะแทนที่ ทุกครั้งที่พบ สตริงเก่าในคอลัมน์นั้น หากคอลัมน์มี 'AUS, AUS' จะกลายเป็น 'US, US'
ข้อควรระวัง: ไม่มี WHERE Clause จะอัปเดตทุกแถว (แถวที่ไม่มี 'AUS' จะไม่เปลี่ยนแปลงแต่ก็ถูกสแกน) สำหรับตารางใหญ่ ควรเพิ่ม WHERE CountryName LIKE '%AUS%' เพื่อลดงาน