Mysql

UPDATE SET REPLACE() 匹配但不改變

  • October 8, 2013

我看過另一篇關於這件事的文章,但它已經 1-1/2 歲了,所以我想我會自己做……此外,另一篇文章對我沒有幫助。我正在嘗試做的是非常直截了當的。

為了安全起見,我在另一個表上嘗試了一個簡單的 UPDATE 語句,它是成功的。所以,這是我的問題:

mysql> UPDATE bugs_fulltext SET short_desc =
REPLACE(short_desc,'I don\'t know why my previous comment means.',
'I don\'t know what my previous comment means.') WHERE bug_id=452;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

我沒有使用萬用字元,也沒有使用 LIKE 語句。我告訴它要更新哪條記錄。為什麼我的文字沒有改變?

仔細查看查詢的輸出

Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

該表達式Rows matched基於WHERE bug_id=452;. 那匹配。

當您執行它時,更改顯然失敗了,因為short_desc列沒有更改,因為short_desc不等於'I don\'t know why my previous comment means.'

要驗證執行此:

SELECT REPLACE(short_desc,'I don\'t know why my previous comment means.',
'I don\'t know what my previous comment means.') replace_result
FROM bugs_fulltext WHERE bug_id=452;

如果您取回舊值,則舊值不在開始的行中。

您應該直接更新它(覆蓋它):

UPDATE bugs_fulltext
SET short_desc = 'I don\'t know what my previous comment means.'
WHERE bug_id=452;

引用自:https://dba.stackexchange.com/questions/51226