有没有办法在单个mysql列字段中替换多个子字符串? 在我的结果中,有以下字段:
'&DY, &Q3'
在这种情况下,DY和Q3是匹配代码,我必须用定义的Word替换。
我尝试使用此regex_replace函数
CREATE FUNCTION `regex_replace`(pattern VARCHAR(1000),replacement VARCHAR(1000),original VARCHAR(1000)) RETURNS varchar(1000)
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(1000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
SET i = 1;
SET temp = '';
IF original REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(original) THEN
LEAVE loop_label;
END IF;
SET ch = SUBSTRING(original,i,1);
IF NOT ch REGEXP pattern THEN
SET temp = CONCAT(temp,ch);
ELSE
SET temp = CONCAT(temp,replacement);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET temp = original;
END IF;
RETURN temp;
END
我的SQL查询:
SELECT REGEX_REPLACE(fm.column,'(\&[\w]{2})*','My Word') FROM `table` fm WHERE id = '123'
没有工作。也许有一个问题是,我的子串开始于"&"这是正则表达式中的运算符!?
答案 0 :(得分:-1)
尝试这个,但我使用MariaDB他们有REGEX_REPLACE内部
https://mariadb.com/kb/en/mariadb/regexp_replace/
SELECT REGEXP_REPLACE('&DY, &Q3','\(\&[A-Z0-9]+\),*','My Word');
<强>结果:强>
My Word My Word