替换在mysql和mariadb中不起作用的正则表达式

替换在mysql和mariadb中不起作用的正则表达式,mysql,regex,replace,mariadb,Mysql,Regex,Replace,Mariadb,我想用正则表达式替换mysql中的字符串。为此,我使用了REGEXP_REPLACE,但它没有给我期望的结果 我正在尝试替换&breakUp=Mumbai;城市,美洲狮;品牌&至&breakUp=孟买;城市,美洲狮;布兰德,德里;状态&但regexp replace未提供所需的结果 我正在使用以下sql查询: SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([\w;,]*)&'

我想用正则表达式替换mysql中的字符串。为此,我使用了REGEXP_REPLACE,但它没有给我期望的结果

我正在尝试替换
&breakUp=Mumbai;城市,美洲狮;品牌&
&breakUp=孟买;城市,美洲狮;布兰德,德里;状态&
但regexp replace未提供所需的结果

我正在使用以下sql查询:

SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([\w;,]*)&','&breakUp=$1,Delhi;State&');
但它给了我以下结果:

&breakUp=Mumbai;city,Puma;brand&
除了sql之外,这些正则表达式在其他地方也可以正常工作。
如何在mysql和mariadb中解决此问题?

\w
无效。您可以使用
[[:alnum:]
[[:alpha:]
而不是
\w

MySQL上的解决方案:

SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[[:alnum:]];,]*)&','&breakUp=$1,Delhi;State&');
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[:alnum:];,]*)&','&breakUp=\\1,Delhi;State&');

MariaDB上的解决方案:

SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[[:alnum:]];,]*)&','&breakUp=$1,Delhi;State&');
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[:alnum:];,]*)&','&breakUp=\\1,Delhi;State&');

您确定替换的反向引用语法为
$1
?尝试更换中的
\\1
。和
[^&]*
而不是
[\w;,]*
根据@WiktorStribiżew的评论,请找到@Arulkumar Ok,这就是MySQL 8,
$1
可以工作。好!!谢谢如何在MariaDB中执行同样的操作?