我想用正则表达式替换mysql中的字符串。为此,我正在使用REGEXP_REPLACE,但它没有给我期望的结果。
我正在尝试将&breakUp=Mumbai;city,Puma;brand&替换为&breakUp=Mumbai;city,Puma;brand,Delhi;State&,但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&');

demo on dbfiddle.uk
MariaDB解决方案:
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[:alnum:];,]*)&','&breakUp=\\1,Delhi;State&');

demo on dbfiddle.uk

09-17 21:19