SQL: Regexp_replace 但只有第一次值出现在记录中

SQL: Regexp_replace but only the first time a value appears in record

我的留言栏有post条内容

我想用 X 搜索和替换模式,但只有第一次模式出现在记录中,因为它可能会出现不止一次。

下面的查询显然会将模式的所有实例替换为 X

UPDATE xf_post SET message = REGEXP_REPLACE (message, 'pattern', 'X');

在 oracle db 上使用此命令非常简单。

UPDATE xf_post SET message = REGEXP_REPLACE (message , 'pattern', 'X', 1, 1);

但是服务器有mariadb不知道怎么弄

REGEXP_REPLACE 仅替换第一次出现的仿真示例。

SELECT txt,
       CONCAT(LEFT(txt, LOCATE(REGEXP_SUBSTR(txt,'pattern'), txt) - 1),
              REGEXP_REPLACE(REGEXP_SUBSTR(txt,'pattern'), 'pattern', 'replacement'),
              SUBSTRING(txt FROM LOCATE(REGEXP_SUBSTR(txt,'pattern'), txt) + LENGTH(REGEXP_SUBSTR(txt,'pattern')))) output
FROM test

fiddle with the explanations