[英]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.