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
我的留言栏有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