MariaDB regexp_replace обратная ссылка не работает должным образом - PullRequest
0 голосов
/ 07 января 2020

У меня есть это простое регулярное выражение в пользовательской функции

set mm = regexp_replace(in_str, '^M([0-9]+(\.[0-9]+)?).*$', '\\1');

при передаче в 'M56-5' в MariaDB 10.1 Я бы получил «56», как и ожидалось, но в MariaDB 10.4 я получаю ошибку » Данные усечены для столбца «мм» в строке 1 ". Когда я передаю «M56.5», я получаю «56,5» в обеих версиях, как и ожидалось. Что-то изменилось?

1 Ответ

0 голосов
/ 08 января 2020

Я понял это. Я по ошибке использовал одну обратную косую черту sh, чтобы избежать "." тогда как для экранирования специальных символов требуется использовать 2 обратных слеша: один для анализатора MariaDB и один для библиотеки регулярных выражений. https://mariadb.com/kb/en/regular-expressions-overview/#escaping

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