ไม่สามารถ ทำ UPDATE ด้วย REGEXP ได้โดยตรง ต้องใช้ตัวดำเนินการ LIKE แทน เนื่องจาก MySQL ไม่รองรับการ UPDATE ด้วย REGEXP
รูปแบบการใช้ LIKE กับ REPLACE:
UPDATE yourTableName SET yourColumnName = REPLACE(yourColumnName, 'yourValue', '') WHERE yourColumnName LIKE '%yourValueThatWillReplace%';
ตัวอย่างการใช้งาน
สร้างตารางทดสอบ:
mysql> create table Replace_Demo ( Id int NOT NULL AUTO_INCREMENT, Value varchar(20), PRIMARY KEY(Id) ); Query OK, 0 rows affected (0.62 sec)
เพิ่มข้อมูล:
mysql> insert into Replace_Demo(Value) values('221)'); Query OK, 1 row affected (0.22 sec)
mysql> insert into Replace_Demo(Value) values('321'); Query OK, 1 row affected (0.24 sec)
mysql> insert into Replace_Demo(Value) values('354)'); Query OK, 1 row affected (0.18 sec)
mysql> insert into Replace_Demo(Value) values('223)'); Query OK, 1 row affected (0.09 sec)
mysql> insert into Replace_Demo(Value) values('446'); Query OK, 1 row affected (0.13 sec)
แสดงข้อมูล:
mysql> select *from Replace_Demo;
ผลลัพธ์:
+----+-------+ | Id | Value | +----+-------+ | 1 | 221) | | 2 | 321 | | 3 | 354) | | 4 | 223) | | 5 | 446 | +----+-------+ 5 rows in set (0.00 sec)
คำสั่ง UPDATE โดยใช้ LIKE แทน REGEXP:
mysql> update Replace_Demo set Value = REPLACE(Value, '221)', '') WHERE Value like '%221)%'; Query OK, 1 row affected (0.21 sec) Rows matched: 1 Changed: 1 Warnings: 0
ตรวจสอบข้อมูลอีกครั้ง:
mysql> select *from Replace_Demo;
ผลลัพธ์:
+----+-------+ | Id | Value | +----+-------+ | 1 | | | 2 | 321 | | 3 | 354) | | 4 | 223) | | 5 | 446 | +----+-------+ 5 rows in set (0.00 sec)
ค่า 221) ถูกลบออกจากแถวที่ 1 เรียบร้อยแล้ว