我想使用正则表达式替换mysql中的字符串。为此,我正在使用REGEXP_REPLACE,但它没有给我想要的结果。
我正在尝试将&breakUp=Mumbai;city,Puma;brand&
替换为&breakUp=Mumbai;city,Puma;brand,Delhi;State&
,但是用regexp替换并不能达到预期的效果。
我正在使用以下sql查询:
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([\w;,]*)&','&breakUp=$1,Delhi;State&');
但这给了我以下结果:
&breakUp=Mumbai;city,Puma;brand&
相同的正则表达式在sql以外的其他地方都可以正常工作。 如何在mysql和mariadb中解决这个问题?
答案 0 :(得分:2)
\w
无效。您可以使用[[:alnum:]]
或[[:alpha:]]
代替\w
:
MySQL上的解决方案:
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&');