Mysql
UPDATE SET REPLACE() 匹配但不改變
我看過另一篇關於這件事的文章,但它已經 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;