замена регулярного выражения, не работающего в mysql и mariadb - PullRequest
1 голос
/ 27 июня 2019

Я хочу заменить строку в 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?

1 Ответ

2 голосов
/ 27 июня 2019

\w недействительно. Вы можете использовать [[:alnum:]] или [[:alpha:]] вместо \w:

Решение для MySQL:

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

демо на dbfiddle.uk

Решение на MariaDB:

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

демо на dbfiddle.uk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...