我想用正则表达式替换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