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

แทนที่ค่าเฉพาะในคอลัมน์ MySQL ด้วย REPLACE และ UPDATE

ใช้ 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%' เพื่อลดงาน