首页 > 解决方案 > MySQL:替换中文本中的字符串

问题描述

我有一个带有 type 条目的表mediumtext。此条目包含具有 40k+ 字符的编码网站内容,如下所示:<!-- {"type":"layout","children":[{"type":"section","props":{"style":"default","width":"default","vertical_align":"middle","title_position":"top-left","title_rotation":"left","title_breakpoint":"xl"...

在文本中有以下跨度:...<span id=\""myDate\"">26.05.2020<\/span>...

我想用我的REGEXP_REPLACE-function 替换 span 内的日期,这在我使用文本时有效:

UPDATE `jl72a_content` SET `fulltext` = REGEXP_REPLACE( 
    '...<span id=\""myDate\"">26.05.2020<\/span>...',
    '<span id=\"myDate\">(.*?)\\\/span>',
    '<span id=\"myDate\">my new value<\/span>')
WHERE id = 2;

但我有一个问题,我不能使用 `fulltext` 作为字符串:

CREATE TEMPORARY TABLE temp SELECT `fulltext` FROM `jl72a_content` WHERE id = 2; 
UPDATE `jl72a_content` SET `fulltext` = REGEXP_REPLACE( 
    (SELECT `fulltext` FROM temp WHERE 1),
    '<span id=\"myDate\">(.*?)\\\/span>', 
    '<span id=\"myDate\">my new value<\/span>?')
WHERE id = 2; 

我不能将临时表的结果转换为 `mediumtext` 并且 `varchar` 限制为 65,535。

如何替换此条目中的跨度?

标签: mysqlregexmariadbregexp-replace

解决方案


推荐阅读