MySQL 是否可以使用正则表达式进行更新?

mysqlmysqli database

您无法使用正则表达式进行更新,即您需要使用 LIKE 运算符而不是正则表达式。MySQL 不支持使用正则表达式进行更新。LIKE 运算符如下:

UPDATE yourTableName SET yourColumnName= REPLACE(yourColumnName,yourValue)', '' )
WHERE yourColumnNameLIKE '%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)

使用 insert 命令在表中插入一些记录。 查询语句如下:

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)

使用 select 语句显示表中的所有记录。查询如下:

mysql> select *from Replace_Demo;

输出结果如下:

+----+-------+
| Id | Value |
+----+-------+
|  1 | 221)  |
|  2 | 321   |
|  3 | 354)  |
|  4 | 223)  |
|  5 | 446   |
+----+-------+
5 rows in set (0.00 sec)

这是使用 LIKE 运算符代替正则表达式进行更新的查询:

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

现在再次使用 select 语句检查表记录。查询如下:

mysql> select *from Replace_Demo;

输出结果如下:

+----+-------+
| Id | Value |
+----+-------+
|  1 |       |
|  2 | 321   |
|  3 | 354)  |
|  4 | 223)  |
|  5 | 446   |
+----+-------+
5 rows in set (0.00 sec)

相关文章