小编Wes*_*ley的帖子

为什么 UPDATE SET REPLACE() 语句会匹配行,但不更改并且不发出警告?

我正在寻找某个字段中的某个字符串,并想用一个新字符串替换它。具体来说,我希望对一个 URL 的所有引用都更改为另一个 URL。我已经编写了这个 SQL 语句,并mysql>使用 MySQL Community Server 5.1.54 在 CentOS 5.5上的提示下运行它。

update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%');
Run Code Online (Sandbox Code Playgroud)

回应是:

Query OK, 0 rows affected (0.02 sec)
Rows matched: 618  Changed: 0  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

我怎样才能追踪为什么没有进行任何更改?

编辑 1:

感谢 Aaron Bertrand,我发现它REPLACE()无法处理通配符,而且我完全错误地使用了它(想想:缺少WHERE子句)。这是我修改后的声明:

UPDATE [table]
SET [column] =
REPLACE (
    [column],
    'companydomain.com',
    'companydomain.org' )
WHERE
    [column]
LIKE
    '%companydomain.com%';
Run Code Online (Sandbox Code Playgroud)

我收到旧的,熟悉的:

Query OK, 0 rows affected (0.02 sec)
Rows matched: 167  Changed: 0  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

编辑2:

我会告诉你我做错了什么!!我不是在质疑假设。我的 …

mysql dml

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

dml ×1

mysql ×1