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

ค้นหาและแทนที่สตริงใน MySQL สำหรับค่าเฉพาะเจาะจง

ใช้ฟังก์ชัน 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');