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

MySQL สามารถ UPDATE ด้วย REGEXP ได้หรือไม่?


ไม่สามารถ ทำ 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 เรียบร้อยแล้ว