ใช้คำสั่ง UPDATE ร่วมกับฟังก์ชัน REPLACE() เพื่อลบหรือแทนที่ข้อความบางส่วนในคอลัมน์ TEXT/VARCHAR
ตัวอย่างการใช้งาน
สร้างตารางเก็บข้อมูลเกม (รูปแบบ XML-like):
mysql> create table DemoTable1583 (
-> GameDetails text
-> );
Query OK, 0 rows affected (1.38 sec)
เพิ่มข้อมูลทดสอบ:
mysql> insert into DemoTable1583 values('<GameName>=Candy</GameName>,<GamePrice>2000</GamePrice>');
Query OK, 1 row affected (0.53 sec)
mysql> insert into DemoTable1583 values('<GameName>=Lucky29</GameName>,<GamePrice>10000</GamePrice>');
Query OK, 1 row affected (0.25 sec)
ดูข้อมูลก่อนแก้ไข:
mysql> select * from DemoTable1583;
+------------------------------------------------------------+ | GameDetails | +------------------------------------------------------------+ | <GameName>=Candy</GameName>,<GamePrice>2000</GamePrice> | | <GameName>=Lucky29</GameName>,<GamePrice>10000</GamePrice> | +------------------------------------------------------------+ 2 rows in set (0.00 sec)
คิวรีลบข้อความเฉพาะส่วน
mysql> update DemoTable1583
-> set GameDetails = replace(GameDetails, '<GameName>=Candy</GameName>', '');
Query OK, 1 row affected (0.38 sec)
Rows matched: 2 Changed: 1 Warnings: 0
ตรวจสอบผลลัพธ์:
mysql> select * from DemoTable1583;
+------------------------------------------------------------+ | GameDetails | +------------------------------------------------------------+ | ,<GamePrice>2000</GamePrice> | | <GameName>=Lucky29</GameName>,<GamePrice>10000</GamePrice> | +------------------------------------------------------------+ 2 rows in set (0.00 sec)
คำอธิบาย
REPLACE(คอลัมน์, 'ข้อความเก่า', 'ข้อความใหม่') จะค้นหาและแทนที่ทุกครั้งที่พบ ในตัวอย่างแทนที่ด้วยสตริงว่าง '' เพื่อ "ลบ" ส่วนที่ต้องการออก
ข้อควรระวัง: WHERE clause ไม่ได้ระบุ ทำให้สแกนทุกแถว (Rows matched: 2) แต่เปลี่ยนแค่แถวที่มีข้อความตรงกัน (Changed: 1) ควรเพิ่ม WHERE เพื่อประสิทธิภาพ