簡體   English   中英

MySQL-更新列中字符串的一部分

[英]MySQL - UPDATE part of a string in a column

我正在嘗試替換列中的某些文本-我確認存在的文本。 當我運行查詢時:

SELECT Body FROM dbname.tcontent 
where body like '%http://local.website.org%'
and display=1
and approved=1;

它返回359條記錄。 因此,我期望運行此查詢時會更改359條記錄:

update dbname.tcontent 
set Body = replace(Body, 'http://local.website.org', '/foldername') 
where instr(Body, 'http://local.website.org') > 0 
and display=1 
and approved=1;

但是,查詢找到359個匹配項,但沒有更新任何列。 該消息顯示為:“受影響的0行(s)所匹配的行:359已更改:0警告:0。我很確定我的SQL正確無誤,因為我至少從三個來源確認了它。我已經讀過359個“匹配項”基於與WHERE子句匹配的記錄,因此我認為問題出在第二行:

set Body = replace(Body, 'http://local.website.org', '/foldername') 

即使SQL是正確的。 為了確保仍然沒有任何行被更新,我在我的首選項中未選中“安全更新”。

我仍然認為,盡管有一個我想在此處執行操作的示例,但我要替換的文本中的斜杠和/或點可能會取代replace方法。

在此先感謝您的協助!

無論出於什么原因,我都必須將其分解為兩個語句。 第一條Update語句將http://替換為空,第二條替換了URL的其余部分:

update database.tcontent set Body = replace(Body, 'http://', '')  where Body like '%http://local.website.org%';
update database.tcontent set Body = replace(Body, 'local.website.org', '/foldername')  where Body like '%local.website.org%';

請嘗試以下查詢:

UPDATE `dbname`.`tcontent` 
SET `body`= REPLACE(`body`, 'FindThisText', 'ReplaceWithThisText') 
WHERE `body` like '%FindThisText%' AND `display`=1 and `approved`=1;

在運行此類UPDATE查詢之前,請始終備份表。

這行不通嗎?

設置正文='ReplaceWithThisText'嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM