我在post_content列中有html内容。
我想搜索A并将其替换为B,但只有A第一次出现在记录中,因为它可能出现多次。
以下查询显然会将A的所有实例替换为B
UPDATE wp_posts SET post_content = REPLACE (post_content, 'A', 'B');
这实际上应该是您在MySQL中想要的:
UPDATE wp_post SET post_content = CONCAT(REPLACE(LEFT(post_content, INSTR(post_content, 'A')), 'A', 'B'), SUBSTRING(post_content, INSTR(post_content, 'A') + 1));
它比我之前的答案稍微复杂- 您需要找到’A’的第一个实例(使用INSTR函数),然后结合使用LEFT和REPLACE来替换该实例,而不是使用SUBSTRING和INSTR来找到相同的实例您要替换的’A’并使用上一个字符串对其进行CONCAT。
请参阅下面的测试:
SET @string = 'this is A string with A replace and An Answer'; SELECT @string as actual_string , CONCAT(REPLACE(LEFT(@string, INSTR(@string, 'A')), 'A', 'B'), SUBSTRING(@string, INSTR(@string, 'A') + 1)) as new_string;
产生:
actual_string new_string --------------------------------------------- --------------------------------------------- this is A string with A replace and An Answer this is B string with A replace and An Answer